2013-02-01 11 views
6

おはよう!丸みのあるコーナービューを作成する

私のビューを(メインビューで表示する)しようとすると、角が丸くなります。そういうことをやっているが、うまくいかない。何か案は?

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; 
if (self) { 
    // Custom initialization 
    currenView = [[UIView alloc] init]; 

    UIBezierPath *maskPath; 
    maskPath = [UIBezierPath bezierPathWithRoundedRect:currenView.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(30.0, 30.0)]; 

    CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init]; 
    maskLayer.frame = currenView.bounds; 
    maskLayer.path = maskPath.CGPath; 
    currenView.layer.mask = maskLayer; 


} 
return self; 
+1

layerのcornerRadiusプロパティを使用するだけで簡単に作成できます。 – Exploring

答えて

13

このような何か試してみてください:シャドウの

view.layer.cornerRadius = 5.0; 
view.layer.masksToBounds = YES; 

view.layer.shadowColor = [UIColor blackColor].CGColor; 
view.layer.shadowOffset = CGSizeMake(1.0f, 1.0f); 
view.layer.masksToBounds = NO; 
view.layer.shadowRadius = 5.0f; 

<QuartzCore/QuartzCore.h>

+0

は動作しません:(ARCを使用して何かができますか? – Pavel

+0

割り当てているUIViewで何もしていないことに気付きました - currenViewはどこにも行きません – Stavash

+0

この行の後にview.clipsToBounds = YESを追加してください – CRDave

0

Stavashのソリューションが正しいように思わをインポートすることを確認し、私はいくつかのそれを使用しているが回。あなたがマスク層を使用することを選択したり、主張して​​いるなら、この回答を見てください:https://stackoverflow.com/a/13163693/936957

0

あなたのビューにはサイズがありません。そのwとhのような、

currentView = [[UIView alloc] initWithFrame:CGRectMake(0,0 200,200)]; 

0トライのものですし、次にここ

currentView.layer.cornerRadius = 8.0; 
currentView.layer.masksToBounds = YES; 
currentView.layer.borderWidth = 1.0; 
+0

view.layer.cornerRadius = 5.0; view.layer.masksToBounds = YES; view.layer.shadowColor = [UIColor blackColor] .CGColor; view.layer.shadowOffset = CGSizeMake(1.0f、1.0f); view.layer.masksToBounds = NO; view.layer.shadowRadius = 5.0f; このコーナーが好きなら、丸みを帯びていますが、影がありません。私は問題があると思う。 view.layer.masksToBounds = NO;影のための – Pavel

+0

はstavashの解決に続きます – karim

2

を適用するコードです。 Allocはビューを初期化し、このメソッドに送信して角を丸くします。必要に応じて任意の角を丸めることができます。また、シャドーストロークカラーを与える。

-(void) setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners withColor: (UIColor*) color 
{ 
UIBezierPath* rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(9.0, 9.0)]; 

CAShapeLayer* shape = [[[CAShapeLayer alloc] init] autorelease]; 
[shape setPath:rounded.CGPath]; 
shape.strokeColor = [[UIColor grayColor] CGColor]; 

view.backgroundColor=color; 
view.layer.mask = shape; 
} 

このようなメソッドを呼び出します。

[self setMaskTo:ABCView byRoundingCorners:UIRectCornerAllCorners withColor:[UIColor greenColor]]; 
関連する問題