2011-12-24 12 views
2

私は、私のUITableViewの頂点だけに丸みのついたコーナーを追加しようとしていますが、問題は、下のコードでは、私の全体のUITableView上に黒いレイヤーを作成しています。どうすればこの問題を解決できますか?UITableViewの一番上に丸い角を追加する?

//Rounded Corners for top corners of UITableView 
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:thetableView.bounds 
               byRoundingCorners:UIRectCornerTopLeft 
                cornerRadii:CGSizeMake(10.0, 10.0)]; 
UIBezierPath *maskPath2 = [UIBezierPath bezierPathWithRoundedRect:thetableView.bounds 
               byRoundingCorners:UIRectCornerTopRight 
                cornerRadii:CGSizeMake(10.0, 10.0)]; 
// Create the shape layer and set its path 
CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = thetableView.bounds; 
maskLayer.path = maskPath.CGPath; 

CAShapeLayer *maskLayer2 = [CAShapeLayer layer]; 
maskLayer.frame = thetableView.bounds; 
maskLayer.path = maskPath2.CGPath; 

// Set the newly created shape layer as the mask for the image view's layer 
[thetableView.layer addSublayer:maskLayer]; 
[thetableView.layer addSublayer:maskLayer2]; 

答えて

-1

私は、ビューがトップcorner.Itsに、それはあなたを助けることproblem.Mayを解決するだけで解決策を丸めたテーブルビューの背景ビューを作成するための最良の方法だと思います。次のコードはnavigationbarのために私のために働く、ちょうど最初の行を変更し、あなたのself.tableViewを入れ

+0

これは、同じ問題になります。私の問題は、一般に任意のUIViewまたはそのサブクラスです。だから私はこれを理解する必要があります。 –

+2

http://stackoverflow.com/questions/2264083/rounded-uiview-using-calayers-only-some-corners-howそれがあなたを助けることができるかもしれません。 – Emon

+0

ああ、addSublayerを行う代わりに、CCLayerのmaskプロパティを設定するだけでよいはずです。だから、私はどのように1つのマスクに複数のUIRextconrnersを追加しますか? –

6

CALayer *capa = [self.navigationController navigationBar].layer; 
[capa setShadowColor: [[UIColor blackColor] CGColor]]; 
[capa setShadowOpacity:0.85f]; 
[capa setShadowOffset: CGSizeMake(0.0f, 1.5f)]; 
[capa setShadowRadius:2.0f]; 
[capa setShouldRasterize:YES]; 


//Round 
CGRect bounds = capa.bounds; 
bounds.size.height += 10.0f; //I'm reserving enough room for the shadow 
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:bounds 
               byRoundingCorners:(UIRectCornerTopLeft | UIRectCornerTopRight) 
                cornerRadii:CGSizeMake(10.0, 10.0)]; 

CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
maskLayer.frame = bounds; 
maskLayer.path = maskPath.CGPath; 

[capa addSublayer:maskLayer]; 
capa.mask = maskLayer; 
関連する問題