我如何才能发现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
  }
}

最新更新