- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
有几个问题询问有关在 Apple 平台上的颜色空间之间转换颜色的问题。不幸的是,答案通常涉及 NSColor
或 UIColor
—— 无法在 OS X 和 iOS 上互换使用的不可移植的 Objective-C 类。
所以我想问一个非常具体的问题,我确定肯定会有一个很好的答案。我简直无法相信 Apple 不会预见到这种需求。
如何以通用方式将 CGColor
从一种颜色空间(例如,单色)转换为另一种颜色空间(例如,RGB),支持所有 CGColorSpace
类型,仅使用可移植 Core Graphics 功能时?
一些上下文。我需要将在线服务提供的值与存储在 UIColor
中的值相乘。在 iOS5 之前提取 RGB 分量的正确方法是使用 CGColorGetComponents()
,iOS5 最终引入了方法 -[UIColor getRed:green:blue:alpha:]
。然后我将这种颜色与从在线服务中获取的颜色相乘。如果 +[UIColor grayColor]
用于生成 UIColor
,则此操作失败。意思是,我需要将颜色从灰度色彩空间转换为 RGB。在这种情况下,这很容易。提供其他一些色彩空间怎么样?或者如果在理论上的 future 场景中我只想处理单个像素的颜色怎么办?
某处有人建议我将一个像素绘制到位图上下文中,然后读取该像素。这太疯狂了,我希望这不是唯一的方法。显然绘图方法可以弄清楚如何进行转换;我们如何在不创建位图上下文的情况下利用它来仅在其中绘制像素?
其他研究:
UIColor
的未记录/私有(private)方法-styleString
,更有趣的是还提到了未记录的CGColorTransform
。CoreGraphics/CGColorTransform.h
的 header 。不幸的是,这个 header 不存在,至少在 Mountain Lion 上不存在。为什么 Apple 会隐藏这些 API?CGColorTransform
的其他合理资源是 FreeQuartz,它是 Core Graphics 的免费/开源重新实现。向 Apple 提交雷达,#12141580,打开并记录 CGColorTransform
。不过,我并没有屏住呼吸,所以如果有其他明智的建议,我会洗耳恭听。
最佳答案
Apple 在 iOS 9 和 macOS 10.11 中添加了这个 API:
CGColorCreateCopyByMatchingToColorSpace
CGColor.converted(to:intent:options:)
关于ios - 在色彩空间之间转换 CGColors 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12052349/
我知道如何解决我即将概述的问题,但是,我有点困惑为什么代码场景在 iOS 模拟器中有效,但在我的 iPad 上却无效。 我有一个方法可以检查各种属性,然后根据属性的状态设置 CALayer 的背景颜色
根据 CGColor 的苹果文档: https://developer.apple.com/documentation/coregraphics/cgcolor/1455631-init 我应该可以用
我有一个黑色的 UILabel; 我正在编写以下代码来获取黑色的分量。 UIColor *aColor = [aLabel.textColor retain]; const CGFloat* comp
我在我的 Swift 应用程序中为 OS13 设置了动态 UIColor 来处理暗模式。 例如: static var background: UIColor { if #available(
这可能是您一整天看到的最愚蠢的问题,但我找不到解决方案。我有一个带边框的圆形 ImageView ,我希望边框与 Xcode 中的默认色调颜色相同,因此如果您能提供帮助,那就太好了。抱歉这个中午的问题
在一个类中,我有一个 CGColorRef 类型的变量 myColor,声明如下: @implementation MyClass { ....... CGColorRef myCol
所以看起来有一个 filed bug for swift与 CoreFoundation 类型有关。根据描述,似乎没有对 CGPath 和 CGColor 进行类型检查,下面是演示该行为的错误片段。
我使用相同颜色的两种变体(浅色和深色)来创建渐变。 代码: CAGradientLayer *gradient = [CAGradientLayer layer]; UIColor *light =
有几个问题询问有关在 Apple 平台上的颜色空间之间转换颜色的问题。不幸的是,答案通常涉及 NSColor 或 UIColor —— 无法在 OS X 和 iOS 上互换使用的不可移植的 Objec
当我初始化 CGColor 并将其转换为 UIColor 时,它不会以与使用相同值初始化的 UIColor 相同的方式呈现。如何在 CGColor 和 UIColor 之间转换并保持相同的外观? 此代
我正在尝试设置这样的属性 - -接口(interface): @property (readwrite, assign) CGColorRef otherBallColor; -一些方法: CGCol
我使用以下代码来设置 View Controller 的背景 view.wantsLayer = true let myColor = NSColor(calibratedRed: 5
关闭。这个问题需要 details or clarity 。它目前不接受答案。 想改进这个问题吗? 添加细节并通过 editing this post 澄清问题。 关闭 5 年前。 Improve
我正在尝试获取结果 CGColor(或 UIColor),它们将显示为位于顶部的两个(或更多) View 的结果彼此各有不同的颜色。显然,靠近前景的 View 的 alpha 值小于 1,从而允许后面
因此,由于函数 CGColor.copy() 返回一个可选值,人们会假设它可能有返回 nil 的原因。但是,除了 CGColor 本身是一个可选值之外,我想不出任何失败的原因。因为我在我的程序中使用它
我是 swift 和 iOS 的新手,有些事情我不知道该怎么办。 我有来自后端的颜色,我想将其转换为 CGColor "colors": [ "6909A1", "75
下面是我尝试从 UIColor 转换为 CGColor 的颜色: 001385 - R:0 G:19 B:133 ca000b - R:202 G:0 B:11 这是 Blue 与 iOS 的渲染:答
这个问题在这里已经有了答案: iOS CGColor versus UIColor (4 个答案) 关闭 4 年前。 在我的项目中,我有一组颜色。我应该使用 UIColor 作为基础类型还是 cgC
这让我感到困惑......我正在尝试为 NSColor 创建一个方便的初始化器,它从 CGColor 中创建一个,但由于某些该死的原因它只是拒绝确认 CGColor 存在!我已经导入了 Cocoa,为
我正在尝试使用 Swift 创建自定义 RGB CGColor 以用作 UIButton 的边框颜色。我尝试了以下代码,但颜色不可见: var red = UIColor(red: 100.0, gr
我是一名优秀的程序员,十分优秀!