How can I round up a CGFloat in Swift?
ceil(CDouble(myCGFloat)) but that only works on iPad Air & iPhone 5S.
When running on another simulated device I get an error saying
'NSNumber' is not a subtype of 'CGFloat'
Update: Apple have now defined some CGFloat-specific versions of common functions like
func ceil(x: CGFloat) -> CGFloat
…specifically to cope with the 32/64-bit difference. If you simply use
ceil with a CGFloat argument it should now work on all architectures.
My original answer:
This is pretty horrible, I think, but can anyone think of a better way?
#if doesn’t seem to work for
CGFLOAT_IS_DOUBLE; I think you’re limited to build configurations, from what I can see in the documentation for conditional compilation.
var x = CGFloat(0.5) #if arch(x86_64) || arch(arm64) var test = ceil(x) #else var test = ceilf(x) #endif
Answered By – Matt Gibson
Answer Checked By – Terry (BugsFixing Volunteer)