iOS   发布时间:2022-03-30  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了核心图形 – Xcode 8 Beta 4 CGColor.components不可用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
虽然下面的代码以前工作过,但它已停止在 @L_404_0@ 8 Beta 4中工作,可能是因为组件返回的是一个非常非 Swift-y的C系列浮点数,并且已被删除.错误是秃头 – “’组件’不可用” – 如果有的话,我找不到取代它的东西.有谁知道如何产生相同的功能

public var cgColour: CGColor {
    get {
        return CGColor(red: self.colourRed,green: self.colourGreen,blue: self.colourBlue,alpha: self.colourAlpha)
    }
    set {
        let comps = newValue.components // No longer available
        self.colourRed = (comps?[0])!
        self.colourGreen = (comps?[1])!
        self.colourBlue = (comps?[2])!
        self.colourAlpha = (comps?[3])!
    }
}

更新
@Hamish的答案有效,但我最初的意图是不使用UIColor或NSColor,以便我的代码可以在iOS和&苹果系统.我最终做的是这个……

#if os(iOS)
import UIKit
#elseif os(OSX)
import Cocoa
#endif

extension CGColor {
    var components: (red: CGFloat,green: CGFloat,blue: CGFloat,alpha: CGFloat) {
        var r: CGFloat = 0
        var g: CGFloat = 0
        var b: CGFloat = 0
        var a: CGFloat = 0
        #if os(iOS)
            UIColor(cgColor: self).getRed(&r,green: &g,blue: &b,alpha: &a)
        #elseif os(OSX)
            NSColor(cgColor: self)?.getRed(&r,alpha: &a)
        #endif
        return (r,g,b,a)
    }
}
// Playground code to test...
#if os(iOS)
let rgba = UIColor.brown.cgColor.components //(0.6,0.4,0.2,1.0)
#elseif os(OSX)
let rgba = NSColor.brown.cgColor.components //(0.6,1.0)
#endif

……这是一个很好的例子 – 有没有人得到更好的答案?

解决方法

这似乎是一个过渡性的beta问题.

Github上的Swift repo包含一个extensive SDK overlay for CoreGraphics,包括一个新版本的CGColor.components,其返回类型是Swift数组而不是UnsafePointer.它们如何使SDK覆盖工作的部分工作是API notes,它将一些底层C调用映射到双下划线的Swift方法,以便覆盖可以将它们包装在更Swifty接口中.

看起来beta 4和beta 5编译器选择了API注释更改,但不包括包含新版本组件的覆盖.据推测,未来的测试版(或最终的Swift 3.0 / Xcode 8.0版本)将包含现在github上的所有内容.

大佬总结

以上是大佬教程为你收集整理的核心图形 – Xcode 8 Beta 4 CGColor.components不可用全部内容,希望文章能够帮你解决核心图形 – Xcode 8 Beta 4 CGColor.components不可用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: