假设我想为UIView设置背景图像;显然,我是通过调用[UIColor colorWithPatternImage]来实现这一点的。有没有办法确定UIColor对象是否已经以这种方式初始化,即它是否是一个 * 模式 * 而不是纯色?
UIView
[UIColor colorWithPatternImage]
UIColor
o4tp2gmn1#
你可以试着调用CGColorGetPattern(color.CGColor),这个函数并不记录如果颜色不是图案颜色会发生什么,但是可以合理地预期它会返回NULL。
CGColorGetPattern(color.CGColor)
NULL
jw5wzhpr2#
这是我会尝试的:
if (CGColorGetPattern(uiColor.CGColor)) { // it's a pattern-based color }
n53p2ov03#
对于Swift,您可以使用以下扩展名:
public extension UIColor { /// Returns `true` if the color is backed by patterned image. var isPatterned: Bool { cgColor.pattern != nil } }
同样对于AppKit NSColor,您可以执行以下操作:
NSColor
public extension NSColor { /// Returns `true` if the color is backed by patterned image. var isPatterned: Bool { type == .pattern } }
3条答案
按热度按时间o4tp2gmn1#
你可以试着调用
CGColorGetPattern(color.CGColor)
,这个函数并不记录如果颜色不是图案颜色会发生什么,但是可以合理地预期它会返回NULL
。jw5wzhpr2#
这是我会尝试的:
n53p2ov03#
对于Swift,您可以使用以下扩展名:
同样对于AppKit
NSColor
,您可以执行以下操作: