2017-09-12 11 views
1

を追加しようとしたときにUIImageが、私はUIImageView上の特定の角を丸めるために、この関数を作成している消える:レイヤーマスク

func roundCorners(corners: [UIRectCorner], imageView: UIImageView) -> CAShapeLayer { 
    let maskPath = UIBezierPath.init(roundedRect: imageView.bounds, byRoundingCorners:[.topLeft], cornerRadii: CGSize.init(width: 7.0, height: 7.0)) 
    let maskLayer = CAShapeLayer() 
    maskLayer.frame = imageView.frame 
    maskLayer.path = maskPath.cgPath 
    return maskLayer 
} 

私はこのような画像topLeftImageにそれを適用すると:topLeftImage.layer.mask = roundCorners(corners: [.topLeft], imageView: topLeftImage)、それは画像が消えます。画像を宣言する方法は次のとおりです。

let topLeftImage: UIImageView = { 
    let iv = UIImageView() 
    iv.image = #imageLiteral(resourceName: "myImage") 
    iv.layoutIfNeeded() 
    iv.translatesAutoresizingMaskIntoConstraints = false 
    iv.contentMode = UIViewContentMode.scaleAspectFill 
    iv.layer.masksToBounds = true 
    iv.clipsToBounds = true 
    return iv 
}() 

レイヤーマスクを適用しても、画像を画面に表示するにはどうすればよいですか。

+0

怠惰VARの代わりに、いつも私はあなたが '聞かせMASKPATH = UIBezierPath.init(roundedRect変更が必要だと思う同じ角を曲がってみましょう – karthikeyan

+0

無関係が、あなたの方法を使用して追加します。imageView.bounds、byRoundingCornersを: CGImage.init(幅:7.0、高さ:7.0)) 'によって生成されます。高さ:7.0)) 'もしあなたが本当にあなたのメソッドが定義されたパラメータを使って動作したいのなら、 –

答えて

2

フレームでUIImageViewを初期化していないため、画像が表示されないと思います。次のコードスニペットを試してみてください。

let iv = UIImageView(frame: CGRect(x: 10, y: 10, width: 100, height: 100)) 
+0

それを修正しました、ありがとう –