如何确定 UIColor 是否基于模式?

发布于 2024-12-29 12:50:13 字数 152 浏览 0 评论 0原文

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

Suppose I want to set the background image for a UIView; apparently I do this by calling [UIColor colorWithPatternImage]. Is there any way to determine if a UIColor object has been initialized in this way, i.e., if it is a pattern rather than a solid color?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜巴黎 2025-01-05 12:50:14

这就是我要尝试的:

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

This is what I would try:

if (CGColorGetPattern(uiColor.CGColor)) {
    // it's a pattern-based color
}
红焚 2025-01-05 12:50:14

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

For Swift, you can use following extensions:

public extension UIColor {

  /// Returns `true` if the color is backed by patterned image.
  var isPatterned: Bool {
    cgColor.pattern != nil
  }
}

Also for AppKit NSColor, you can do:

public extension NSColor {

  /// Returns `true` if the color is backed by patterned image.
  var isPatterned: Bool {
    type == .pattern
  }
}
水晶透心 2025-01-05 12:50:13

您可以尝试调用CGColorGetPattern(color.CGColor)。此函数不会记录如果颜色不是图案颜色时会发生什么,但可以合理地预期它将返回 NULL,

You could try calling CGColorGetPattern(color.CGColor). This function doesn't document what happens if the color is not a pattern color, but it's reasonable to expect that it will return NULL,

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文