基本的に私がしたいのlayer.fillColor
は、aCGColor
とUIColor.black.cgColor
。を比較することだけです。
この関数CGColorEqualToColor
はSwift4で非推奨になりました。
私が試してみました:
if(layer.fillColor === UIColor.black.cgColor){
return
}
そして、それはまだ機能しません。私は彼らが同じkCGColorSpaceModelを持っている必要があると思います。
これはログの各色の出力です
<CGColor 0x1c02a15c0> [<CGColorSpace 0x1c02a0a20> (kCGColorSpaceICCBased; kCGColorSpaceModelRGB; sRGB IEC61966-2.1; extended range)] ( 0 0 0 1 )
<CGColor 0x1c008e290> [<CGColorSpace 0x1c02a0f60> (kCGColorSpaceICCBased; kCGColorSpaceModelMonochrome; Generic Gray Gamma 2.2 Profile; extended range)] ( 0 1 )
解決策は何ですか?
CGColor
これは、指定された色が黒かどうかをチェックするための拡張機能です。これは、RGBおよびグレースケールの色空間の色で機能します。
extension CGColor {
func isBlack() -> Bool {
let count = numberOfComponents
if count > 1 {
if let components = components {
for c in 0..<components.count-1 { // skip the alpha component
// All components are 0 for black
if components[c] != 0.0 {
return false
}
}
return true
}
}
return false
}
}
print(UIColor.black.cgColor.isBlack())
print(UIColor(red: 0, green: 0, blue: 0, alpha: 1).cgColor.isBlack())
これは次のように使用できます。
if layer.fillColor.isBlack() {
return
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加