假设我想为
UIView
设置背景图片;显然,我可以调用[UIColor colorWithPatternImage]
来实现这一点。是否有办法确定UIColor
对象是否以这种方式初始化,即它是一个模式而不是纯色?UIView
设置背景图片;显然,我可以调用[UIColor colorWithPatternImage]
来实现这一点。是否有办法确定UIColor
对象是否以这种方式初始化,即它是一个模式而不是纯色?您可以尝试调用CGColorGetPattern(color.CGColor)
函数。虽然该函数没有说明如果颜色不是模式颜色会发生什么,但是合理地期望它将返回NULL
。
我会尝试以下方法:
if (CGColorGetPattern(uiColor.CGColor)) {
// it's a pattern-based color
}
对于Swift,您可以使用以下扩展:
public extension UIColor {
/// Returns `true` if the color is backed by patterned image.
var isPatterned: Bool {
cgColor.pattern != nil
}
}
对于 AppKit 中的 NSColor
,您可以执行以下操作:
public extension NSColor {
/// Returns `true` if the color is backed by patterned image.
var isPatterned: Bool {
type == .pattern
}
}