I was adapting to Swift an ObjectiveC method I found on the internet (maybe here, I can't remember it) and when I build it for iPad Air, it runs perfectly, but when I try to run it on an iPad 2 or iPad Retina it gives 4 errors (2 different errors, each one twice):
/* Scale and crop image */
func imageByScalingAndCroppingForSize(#originalImage: UIImage, size:CGSize) -> UIImage {
let sourceImage = originalImage
var newImage: UIImage
let imageSize: CGSize = sourceImage.size
let width: Double = Double(imageSize.width)
let height: Double = Double(imageSize.height)
var targetWidth: Double = Double(size.width)
var targetHeight: Double = Double(size.height)
var scaleFactor: Double = 0.0
var scaledWidth: Double = targetWidth
var scaledHeight: Double = targetHeight
var thumbnailPoint: CGPoint = CGPointMake(0.0, 0.0)
if (imageSize != size) {
let widthFactor: Double = Double(targetWidth / width)
let heightFactor: Double = Double(targetHeight / height)
if (widthFactor > heightFactor) { // Scale to fit height
scaleFactor = widthFactor
}else{ // Scale to fit width
scaleFactor = heightFactor
}
scaledWidth = Double(width * scaleFactor)
scaledHeight = Double(height * scaleFactor)
// Center the image
if (widthFactor > heightFactor) {
thumbnailPoint.y = (targetHeight - scaledHeight) * 0.5 // Could not find an overload for '*' that accepts the supplied arguments
}else{
if (widthFactor < heightFactor) {
thumbnailPoint.x = (targetWidth - scaledWidth) * 0.5 // Could not find an overload for '*' that accepts the supplied arguments
}
}
}
UIGraphicsBeginImageContext(size)
var thumbnailRect: CGRect = CGRectZero
thumbnailRect.origin = thumbnailPoint
thumbnailRect.size.width = scaledWidth // Cannot convert the expression's type '()' to type 'CGFloat'
thumbnailRect.size.height = scaledHeight // Cannot convert the expression's type '()' to type 'CGFloat'
sourceImage.drawInRect(thumbnailRect)
newImage = UIGraphicsGetImageFromCurrentImageContext()
if (newImage == nil) {
println("could not scale image")
}
// pop the context to get back to the default
UIGraphicsEndImageContext()
return newImage
}
For both errors, try creating new CGFloat
s.
CGFloat(0.5)
CFFloat(scaledWidth)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With