2011-08-15 5 views
11

イメージをマスクして、2つの丸い角を与えることができます。私が持っているコードでは、画像上に白いマスクを追加するだけですが、それを適用するようには見えません。画像のコーナーを隠すために、私は何をする必要がありますか?iOS:UIBezierPathを使用してUIImageをマスクする

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
UIBezierPath *roundedPath = [UIBezierPath bezierPathWithRoundedRect:maskLayer.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(16.f, 16.f)];  
maskLayer.fillColor = [[UIColor whiteColor] CGColor]; 
maskLayer.backgroundColor = [[UIColor clearColor] CGColor]; 
maskLayer.path = [roundedPath CGPath]; 

// Add mask 
self.imageView.layer.mask = maskLayer; 

答えて

6

Round two corners in UIView

上記のリンクの質問で述べたように、あなたはおそらく、そのマスクを適用する前に、階層構造からビューを削除する必要があります。

[self.imageView removeFromSuperview]; 
self.imageView.layer.mask = maskLayer; 
[self.view addSubview:self.imageView]; 

はまた、あなたのmaskLayerにはboundsを持っていません。マスクしようとしているビューのframe(またはbounds)に設定する必要があります。

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = self.imageView.frame; 
+0

darvidsOnは私にUIImageでこのマスクされたイメージをどのように保存することができますか? –

+1

Appleのマニュアルをお読みください。私は['UIImage'](http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIImage_Class/Reference/Reference.html)と[' CGImage'](http: //developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGImage/Reference/reference.html#//apple_ref/doc/uid/TP30000956-Reference-DontLinkElementID_1)、これは ' UIImage'。 'CGImage'には、マスクを使ってイメージを作成する関数があり、新しい' CGImage'をイメージとして取る 'UIImage'コンストラクタがあることがわかります。 – darvids0n

+0

あなたの返信ありがとうございます。私は尋ねている理由は何も見つかりませんでした... –

関連する問題