ios 如何确定UIColor是否基于图案?

xxe27gdn  于 2022-12-24  发布在  iOS
关注(0)|答案(3)|浏览(120)

假设我想为UIView设置背景图像;显然,我是通过调用[UIColor colorWithPatternImage]来实现这一点的。有没有办法确定UIColor对象是否已经以这种方式初始化,即它是否是一个 * 模式 * 而不是纯色?

o4tp2gmn

o4tp2gmn1#

你可以试着调用CGColorGetPattern(color.CGColor),这个函数并不记录如果颜色不是图案颜色会发生什么,但是可以合理地预期它会返回NULL

jw5wzhpr

jw5wzhpr2#

这是我会尝试的:

if (CGColorGetPattern(uiColor.CGColor)) {
    // it's a pattern-based color
}
n53p2ov0

n53p2ov03#

对于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
  }
}

相关问题