2012-12-28 3 views
7

私は少しの研究をしましたが、簡単な方法はありません のみ UIViewラウンドの右上と左上隅ですか?UIViewラウンドの特定のコーナーを作成

ps。このコードは、すべての四隅を丸くしています。私はほしくない。

#import <QuartzCore/QuartzCore.h> 

self.layer.cornerRadius = 5; 
self.layer.masksToBounds = YES; 
+1

http://stackoverflow.com/questions/4847163/round-two-corners-in-uiview?rq=1の –

+0

可能重複[のみ左上とトップをcornerRadiusを設定する方法UIViewの右隅?](http://stackoverflow.com/questions/10167266/how-to-set-cornerradius-for-only-top-left-and-top-right-corner-of-a-uiview ) –

答えて

22

あなたはこのスニペットでそれを行うことができます。

// Set top right & left corners 
[self setMaskTo:yourView byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight]; 

EDIT

申し訳ありませんが、私はこの

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners 
{ 
    UIBezierPath *rounded = [UIBezierPath bezierPathWithRoundedRect:view.bounds 
                byRoundingCorners:corners 
                 cornerRadii:CGSizeMake(8.0, 8.0)]; 
    CAShapeLayer *shape = [[CAShapeLayer alloc] init]; 
    [shape setPath:rounded.CGPath];  
    view.layer.mask = shape; 
} 

PSを忘れてしまった:私はコメントで言ったように、 UITableViewCellのセルを表示するときにこのようなことを使うと、私はこの種の描画要素は常にパフォーマンスに影響するため、背景イメージを使用する方が良い選択です。

+1

FYI、 'UITableViewCell'セルを表示するときにこのようなことを使うと、この種の描画要素は常にパフォーマンスに影響するため、常に背景イメージを使用する方が良いということがわかりました。 – amb

+2

このコメントはおそらく答えになるはずです。ビューをマスキングすることは大きなパフォーマンスヒットであり、助けがあればいつでもバックグラウンドイメージとなるはずです – wattson12

+0

コメントありがとうございます! ps。私はUITableViewcellとして使用していません。とにかく、たとえ私が本当にバックグラウンドイメージを使用してこれを行う方法を知らないとしても...:((しかし、とにかくありがとうと、とにかく。 – user1903992

0

それが引き起こした問題を抱えているので、セル

を描画するときに、私は完璧に良い仕事を2つのステップで今より良く、より容易なソリューションを持って私はかつてのUIView用の拡張機能を試してみましたが、それは私のために動作しませんでした:)

1)1行のコード(SWIFT 2.0) - それは傷のすべてのビューの4つの隅:

YourView.layer.cornerRadius = 10 

2)と、ストーリーボード内の1つの追加あなたは何のラウンドコーナーを必要としない通常のコーナーで1つのビューを追加し、必要に応じて制約を調整してください: 小さな正方形のビューがメインビューの後ろにある必要があることに注意してください。 This is how it looks in storyboard

Here you can see constraints needed for the small view

関連する問題