2015-02-06 32 views
31

我定義在代碼中的顏色色彩的故事板不匹配的UIColor

[UIColor colorWithHue:32.0/360.0 saturation:0.88 brightness:0.97 alpha:1] 

如果我嘗試設置在故事板相同的顏色,在運行應用程序時,它是一個稍微不同的顏色來定義的一個碼。如果將顏色拖動到上齶,然後選擇不同的顏色並再次選擇上齶,則HSB值會稍有不同。它似乎是在界面構建器中捕捉到不同的(RGB?)顏色。

+0

使用'colorWithHue'而不是RGB網頁十六進制值:很好的選擇。 – zaph 2015-02-06 14:24:14

+3

在您的代碼中,嘗試記錄由IB設置的HSB值。如果他們是不同的文件錯誤:bugreporter.apple.com。我想我也看到了這個問題。 – zaph 2015-02-06 14:26:58

+0

當選擇UIView的bg顏色併爲UITableView設置相同的bg顏色但顏色不同時,我也會遇到同樣的情況。爲了實現這一點,我已經對顏色的阿爾法 – 2015-02-06 14:31:56

回答

118

的Xcode 8+的iOS 10+

我最近所面臨的發佈回答這個問題,並沒有做到了。事實證明,隨着iOS 10 SDK的發佈,UIColor初始化程序init(red:green:blue:alpha:)現在使用擴展的sRGB範圍,因此在配置Storyboard上的顏色值時必須相應地進行設置。

enter image description here

看到蘋果的文檔:https://developer.apple.com/reference/uikit/uicolor/1621925-init

+4

這解釋了一切。你必須是天才:) – 2016-10-15 05:21:50

+2

這是Xcode 8+的正確答案 – Zig 2016-11-22 21:29:38

+3

這是有史以來最令人沮喪的事情。 – nickdnk 2017-02-19 15:11:22

1

似乎這是一個錯誤。當登錄的顏色和IB在代碼中設置,它的值有H:27.982594 S:0.899257 B:0.953253

我已經提交了一份bug報告給蘋果:rdar:// 19744216

由於Zaph

要登錄:

CGFloat cols[4]; 
[color getHue:&cols[0] saturation:&cols[1] brightness:&cols[2] alpha:&cols[3]]; 
NSLog(@"H:%f S:%f B:%f %f",cols[0]*360, cols[1], cols[2], cols[3]); 
33

我有同樣的問題。我看到故事板顏色的運行時RGB值與代碼中運行時創建的UIColors不匹配。我可以通過在配置時將顏色設置爲「Generic RGB」(相對於sRGB的默認值)來修復故事板中的問題。以下是我在IB談論的截圖:

IB Color config util

+0

我想我以前曾嘗試過,但它確實似乎保持了正確現在在Xcode 6.2中使用Generic RGB的值,謝謝 – Nick 2015-03-23 23:38:01

+0

hey @Nick。我也在Xcode 6.2上,並且遇到了同樣的問題,你描述了它不保留你設置的值。你必須稍微玩一下;有條件導致它重置(它的一個小馬車,但我能夠解決它們)。 – mattr 2015-03-24 00:53:43

+2

哇,謝謝。這解決了我的問題。 – 2015-04-03 00:34:09

6

斯威夫特3

在我的情況是什麼究竟準確程度彩色LCD

enter image description here

我希望我已經幫助過:-D

+0

哇,他們改變了很多配置文件,我可以證實這在XCode 9上有效。 – 2017-10-02 09:05:50

相關問題