假设我想为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
}
}