Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Swift - Could not find an overload... & Cannot convert the expression's type

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
}
like image 593
rulilg Avatar asked Jun 15 '14 21:06

rulilg


1 Answers

For both errors, try creating new CGFloats.

CGFloat(0.5)
CFFloat(scaledWidth)
like image 64
Mundi Avatar answered Oct 22 '22 17:10

Mundi