我創建了一個小專案(
基于圖層的下劃線看起來更重。在查看它時,基于圖層的下劃線用于抗鋸齒的顏色比用于基于視圖的下劃線的下劃線抗鋸齒的顏色更暗。
為什么會這樣,我要改變什么才能使它們看起來一樣?
(以下是UnderlinedTextField該類的代碼,以防您不想查看 Github 存盤庫)
/// This is a custom subclass of UITextField that adds a 1-point colored underline under the text field using a CALayer.
/// It implments the `layoutSubviews()` method to reposition the underline layer if the text field is moved or resized.
class UnderlinedTextField: UITextField {
/// Change this color to change the color used for the underline
public var underlineColor = UIColor.blue {
didSet {
underlineLayer.backgroundColor = underlineColor.cgColor
}
}
private let underlineLayer = CALayer()
/// Size the underline layer and position it as a one point line under the text field.
func setupUnderlineLayer() {
var frame = self.bounds
frame.origin.y = frame.size.height - 1
frame.size.height = 1
underlineLayer.frame = frame
underlineLayer.backgroundColor = underlineColor.cgColor
}
required init?(coder: NSCoder) {
super.init(coder: coder)
// In `init?(coder:)` Add our underlineLayer as a sublayer of the view's main layer
self.layer.addSublayer(underlineLayer)
}
override init(frame: CGRect) {
super.init(frame: frame)
// in `init(frame:)` Add our underlineLayer as a sublayer of the view's main layer
self.layer.addSublayer(underlineLayer)
}
// Any time we are asked to update our subviews,
// adjust the size and placement of the underline layer too
override func layoutSubviews() {
super.layoutSubviews()
setupUnderlineLayer()
}
}
uj5u.com熱心網友回復:
你實際上給了它們不同的顏色。
圖層的顏色在代碼中設定,并且是
UIColor.blue.cgColor。視圖的顏色是在故事板中創建的,并且是
R:0.02 G:0.2 B:1 A:1正如在視圖除錯器中檢查它所揭示的那樣。
為什么?因為你沒有考慮到故事板顏色的色彩空間。它是通用 RGB,而您在代碼中創建的顏色是設備 RGB,即sRGB.
另一種查看方式是做一些日志記錄。在運行的應用程式中,這兩種顏色是
<CGColor 0x60000296aa60>
[<CGColorSpace 0x60000296ab20>
(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)]
( 0 0 1 1 )>
和
<CGColor 0x600002976940>
[<CGColorSpace 0x60000296ab20>
(kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)]
( 0.01675 0.198341 1 1 )>
如您所見,第二種顏色已轉換為sRGB色彩空間,這與您開始使用的 Generic RGB 不同,因此轉換后我們得到了不同的顏色。
我會改變什么讓它們看起來一樣
如果您將故事板顏色的色彩空間Device RGB設定為,然后將滑塊設定為簡單的藍色,您將在運行的應用程式中獲得相同的顏色。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386654.html
上一篇:UITableViewDiffableDataSource不是deinit
下一篇:WidgetKit-API呼叫
