2012-02-01 3 views
1

マスクに関して多くの質問がありますが、それらの回答が私を(ちょっとだけ)助けなかったことを知っています。マスクイメージを丸めるために

私は自分のイメージラウンドを行う必要があります。私はmask.pngを作成し、コード内でそれを使用する:

- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {  
CGImageRef maskRef = maskImage.CGImage; 

CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef), 
            CGImageGetHeight(maskRef), 
            CGImageGetBitsPerComponent(maskRef), 
            CGImageGetBitsPerPixel(maskRef), 
            CGImageGetBytesPerRow(maskRef), 
            CGImageGetDataProvider(maskRef), NULL, false); 

CGImageRef masked = CGImageCreateWithMask([image CGImage], mask); 
UIImage* maskedImage = [UIImage imageWithCGImage:masked]; 

CGImageRelease(masked); 
CGImageRelease(mask); 
return maskedImage; 
} 

すべてが素晴らしかったと誰もが幸せでした。しかし、私がデバイス上でこのメソッドをテストし始めると、私はそれがマスクではないことがわかりました。どのように私はイメージをマスクすることができますか?

P.S.一時的に私はマスクでview.layes.maskをレイヤーとして設定しました。そして、この変形はデバイスで動作しています。このレイヤーからラウンドを保存する方法はありますか?

+0

'CALayer.cornerRadius'を調べましたか? – zneak

+0

イメージをラウンドとして保存したいだけでなく、そのまま表示します。 – OdNairy

答えて

1

必要なものがすべて丸型の画像​​ビューであれば、そのすべてを行う必要はありません。

UIImageView * myimageview = [[UIImageView alloc]init]; 
myimageview.layer.cornerRadius = myimageview.frame.size.height; 
myimageview.layer.masksToBounds = true; 

上記のコードを使用して画像をその画像ビューに設定すると、丸い画像ビューが表示されます。ここではイメージを丸くするのではなく、イメージビューにします。