gpt4 book ai didi

ios - Swift UIColor 初始值设定项 - 仅在针对 iPhone5s 时出现编译器错误

转载 作者:IT王子 更新时间:2023-10-29 05:13:01 26 4
gpt4 key购买 nike

情况:

从一个新项目开始:iOS > Application > Game > SpriteKit, Swift, iPhone

在这里,我在我的 GameScene.swift 中编写了一个函数来接受十六进制颜色值和 alpha double。我正在阅读 Swift 文档,并引用了我在网上看到的一个优雅的解决方案。我注意到这个确切的代码编译、运行并在模拟器中为 iPhone5 的构建目标显示正确的颜色。

但是...

当我的构建目标设置为 iPhone5s 时,完全相同的项目甚至不会编译。

the compiler error

Could not find an overload for 'init' that accepts the supplied arguments.

函数:

// colorize function takes HEX and Alpha converts then returns aUIColor object
func colorize (hex: Int, alpha: Double = 1.0) -> UIColor {
let red = Double((hex & 0xFF0000) >> 16) / 255.0
let green = Double((hex & 0xFF00) >> 8) / 255.0
let blue = Double((hex & 0xFF)) / 255.0
var color: UIColor = UIColor( red: Float(red), green: Float(green), blue: Float(blue), alpha:Float(alpha) )
return color
}

didMoveToView中的相关调用:

override func didMoveToView(view: SKView) {

// blue background color
self.backgroundColor = colorize( 0x003342, alpha:1.0)

}

诚然,我是 iOS 开发的新手,但我想知道是什么原因导致编译器找不到此初始化程序?

编辑:暂时建立一个 github

A quick gist with related files... the only one I've edited is GameScene.swift

最佳答案

这可能与 Float 和 Double 不匹配有关。基本上,如果预期参数是 CGFloats,则需要传递 CGFloats。

let color = UIColor(red: CGFloat(red), green: CGFloat(green), blue: CGFloat(blue), alpha: CGFloat(alpha))

这里需要理解的重要一点是,CGFloat 在 32 位平台上被定义为 Float,在 64 位平台上被定义为 Double。因此,如果您显式使用 Floats,Swift 在 32 位平台上不会遇到此问题,但会在 64 位平台上产生错误。

关于ios - Swift UIColor 初始值设定项 - 仅在针对 iPhone5s 时出现编译器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24196528/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com