2017-04-12 15 views
-1

私はXcodeのは、私が呼び出すことができるようにされていませんが、私は以下のUIImage

let logoView: UIImageView = { 
    let LV = UIImageView() 
    let thumbnail = resizeImage(image: "DN", CGSize.init(width:70, height:70)) 
    LV.image = thumbnail 
    LV.contentMode = .scaleAspectFill 
    LV.layer.masksToBounds = true 
    return LV 
}() 

のような拡張機能を呼び出すことにより、画像のサイズを変更しようとした

extension UIImage { 

    func resizeImage(image: UIImage, targetSize: CGSize) -> UIImage { 
     let size = image.size 

     let widthRatio = targetSize.width/image.size.width 
     let heightRatio = targetSize.height/image.size.height 

     // Figure out what our orientation is, and use that to form the rectangle 
     var newSize: CGSize 
     if(widthRatio > heightRatio) { 
      newSize = CGSize(width: size.width * heightRatio, height: size.height * heightRatio) 
     } else { 
      newSize = CGSize(width: size.width * widthRatio, height: size.height * widthRatio) 
     } 

     // This is the rect that we've calculated out and this is what is actually used below 
     let rect = CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height) 

     // Actually do the resizing to the rect using the ImageContext stuff 
     UIGraphicsBeginImageContextWithOptions(newSize, false, 1.0) 
     image.draw(in: rect) 
     let newImage = UIGraphicsGetImageFromCurrentImageContext() 
     UIGraphicsEndImageContext() 

     return newImage! 
    } 
} 

このUIImageリサイズ拡張子を持っていますリサイズ関数の拡張。イメージのサイズを適切に変更するにはどうすればよいですか?

func setupViews() { 


    addSubview(logoView) 
    } 
+0

http://stackoverflow.com/questions/31314412/how-to-画像内で –

答えて

2

拡張機能の機能は、スタンドアロン機能ではなく、拡張機能に関連付けられています。あなたの場合、UIImageに関数を追加していますが、スタンドアロン関数のように呼び出すことになります。修正するには

、あなたの関数は次のようにする必要があります:

extension UIImage { 

    func resizeImage(targetSize: CGSize) -> UIImage { 
     // the image is now “self” and not “image” as you original wrote 
     ... 
    } 
} 

、あなたが好きそれを呼び出します。

let logoView: UIImageView = { 
    let LV = UIImageView() 
    let image = UIImage(named: "DN") 
    if let image = image { 
     let thumbnail = image.resizeImage(CGSize.init(width:70, height:70)) 
     LV.image = thumbnail 
     LV.contentMode = .scaleAspectFill 
     LV.layer.masksToBounds = true 
    } 
    return LV 
}() 
+0

の画像を参照することができます – muescha

+1

良い点、それを反映するために私の答えを編集します。ありがとう@muescha –

+0

答えをありがとうが、私はまだそれを動作させることはできません。私はそれをあなたが述べたとおりに宣言しましたが、私はそれをlogoView内で動作させることはできません。また、UIImageViewからlogoViewをUIImageに再定義しましたが、UIImageをサブビューとして追加することはできません。それをUIImageViewの中でどのように呼び出すか、それ以外の方法を実装することができますか? – Ola