: CGFloat NSNumber :
let c1 = CGFloat(12.3)
let num = c1 as NSNumber
let c2 = num as CGFloat
CGFloat Swift 2
Swift 3.
( - ): , .
NSNumber CFNumber ( CGFloat NSNumber?
Objective-C). , CFNumber
CGFloat:
extension NSNumber {
class func numberWithCGFloat(var value: CGFloat) -> NSNumber {
return CFNumberCreate(nil , .CGFloatType, &value)
}
var cgFloatValue : CGFloat {
var value : CGFloat = 0
CFNumberGetValue(self, .CGFloatType, &value)
return value
}
}
. :
init class method.
:
extension NSNumber {
private convenience init(doubleOrFloat d : Double) {
self.init(double : d)
}
private convenience init(doubleOrFloat f : Float) {
self.init(float : f)
}
convenience init(cgFloat : CGFloat) {
self.init(doubleOrFloat: cgFloat.native)
}
private func doubleOrFloatValue() -> Double {
return self.doubleValue
}
private func doubleOrFloatValue() -> Float {
return self.floatValue
}
var cgFloatValue : CGFloat {
return CGFloat(floatLiteral: doubleOrFloatValue())
}
}
"" init
doubleOrFloat, .
cgFloat.native ,
convenience init(cgFloat : CGFloat) {
self.init(doubleOrFloat: cgFloat.native)
}
. self.native
, doubleOrFloatValue()
var cgFloatValue : CGFloat {
return CGFloat(floatLiteral: doubleOrFloatValue())
}