在swift中使用UIColor(patternImage:UIImage(named:“myimage.jpg”))设置背景时如何获取视图的背景颜色或图像

Posted

技术标签:

【中文标题】在swift中使用UIColor(patternImage:UIImage(named:“myimage.jpg”))设置背景时如何获取视图的背景颜色或图像【英文标题】:How to get background color or image of a view when background is set using UIColor(patternImage: UIImage(named:"myimage.jpg")) in swift 【发布时间】:2017-07-29 14:00:48 【问题描述】:

我已使用以下命令设置视图的背景颜色

self.view.backgroundColor = UIColor(patternImage: UIImage(named:"myimage.jpg")) 

我想再次获取图像名称“myimage.jpg”。为此,我尝试使用以下命令获取图案图像

self.view.backgroundColor?.cgColor.pattern

它正在返回

Optional(<CGPattern 0x600000364e00>)

我也看过Detecting if UIColor was created with colorWithPatternImage

但没多大用处

【问题讨论】:

您想从背景颜色中检索图像名称吗? @PuneetSharma 是的 @PuneetSharma 请查看我更新的问题 【参考方案1】:

我认为不可能获得图像名称。

为了创建颜色,Quartz 2D 使用 CGPattern 对象作为在图形上下文中绘制的颜料。

CGPattern 是一个图像,但它是一个单独的对象。

如果您想检索已创建 UIColor 对象的图像名称,我建议您使用 hashmap(NSDictionary) 作为 UIColor 对象作为键,并将其模式图像名称作为值。现在唯一的问题是UIColor 不符合NSCopying 协议,因此不能直接用作NSDictionary 中的键,但这可以通过使用另一个对象并符合NSCopying 协议来解决。

【讨论】:

也许你是对的。请让我等待更多答案。

以上是关于在swift中使用UIColor(patternImage:UIImage(named:“myimage.jpg”))设置背景时如何获取视图的背景颜色或图像的主要内容,如果未能解决你的问题,请参考以下文章

swift UIColor使用Hex String创建

如何使用 Swift 3 或 Hue 将 CAGradientLayer 转换为 UIColor?

如何从 Swift 中的 UIColor 获取 RGB 代码(INT)[重复]

如何在 Swift 中创建十六进制颜色字符串 UIColor 初始化程序? [复制]

UIView 的神秘 UIColor 行为以及 Swift 中的一般行为

swift 的UIColor + Styles.swift