ios – UIColor扩展方便init无法正常工作
发布时间:2020-12-15 01:42:28 所属栏目:百科 来源:网络整理
导读:convenience init(red:Int,green:Int,blue:Int,alpha:CGFloat) { var red: CGFloat = CGFloat(red)/255.0 var green: CGFloat = CGFloat(green)/255.0 var blue: CGFloat = CGFloat(blue)/255.0 self.init(red:red,green:green,blue:blue,alpha:alpha)} 我编
convenience init(red:Int,green:Int,blue:Int,alpha:CGFloat) { var red: CGFloat = CGFloat(red)/255.0 var green: CGFloat = CGFloat(green)/255.0 var blue: CGFloat = CGFloat(blue)/255.0 self.init(red:red,green:green,blue:blue,alpha:alpha) } 我编写了上面的代码,以便更方便地声明我的自定义uicolor.但不知何故,它通过调用自身崩溃我的应用程序直到堆栈溢出.这有什么不对? 另外,我刚才意识到我没有明确地调用这个init函数.但是,当发生此错误时,我正在调用UIColor.whiteColor().当然,如果我明确调用此函数,仍然会发生错误! 解决方法
我没有看到任何不便这样做:
let myCustomColorHSBa = UIColor(hue: 120/360,saturation: 0.25,brightness: 1.0,alpha: 1) let myCustomColorRGBa = UIColor(red: 191/255,green: 1,blue: 191/255,alpha: 1) 但如果你真的需要一个,你可以这样做: extension UIColor { convenience init(red: Int = 0,green: Int = 0,blue: Int = 0,opacity: Int = 255) { precondition(0...255 ~= red && 0...255 ~= green && 0...255 ~= blue && 0...255 ~= opacity,"input range is out of range 0...255") self.init(red: CGFloat(red)/255,green: CGFloat(green)/255,blue: CGFloat(blue)/255,alpha: CGFloat(opacity)/255) } } UIColor(red: 255) // r 1.0 g 0.0 b 0.0 a 1.0 (Red) UIColor(red: 255,green: 255) // r 1.0 g 1.0 b 0.0 a 1.0 (Yellow) UIColor(red: 255,blue: 255) // r 1.0 g 0.0 b 1.0 a 1.0 (Magenta) UIColor(green: 255) // r 0.0 g 1.0 b 0.0 a 1.0 (Green) UIColor(green: 255,blue: 255) // r 0.0 g 1.0 b 1.0 a 1.0 (Cyan) UIColor(blue: 255) // r 0.0 g 0.0 b 1.0 a 1.0 (Blue) UIColor(red: 255,green: 192,blue: 203) // r 1.0 g 0.753 b 0.796 a 1.0 (Pink) UIColor(red: 255,green: 215) // r 1.0 g 0.843 b 0.0 a 1.0 (Gold) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |