2017-02-11 5 views
0

私はしばらくこのことについて考えてきました。基本的には、下のコードはUIViewに境界線を描画しますが、UIViewをサブビューとして追加すると、UIView - 境界線の上に表示されます。このよう境界線を描き、すべてのサブビューを上に保ちます

enter image description here

どのように(のようにきれいにできる限りは)、すべてのサブビューの上の境界線を維持していますか?

enter image description here

これは私がこれまで持っているものである。このよう

。しかし、上記のように、それはすべてのサブビューの上に境界線を保持しません。

CGPathRef CGPathRect = CGPathCreateWithRect(rect, 0); 
    CGContextRef context = UIGraphicsGetCurrentContext(); 
    CGPathRef border = CGPathCreateCopyByStrokingPath(rect.CGPath, NULL, 5.0f, kCGLineCapButt, kCGLineJoinMiter, 0); 
    CGContextAddPath(context, border); 
    CGContextSetFillColorWithColor(context, someCGColor); 
    CGContextDrawPath(context, kCGPathFill); 
    CGPathRelease(border); 

私は国境自体の別々のUIViewを作成することができ、そしてちょうどそのUIView下にサブビューを挿入し、それはむしろハック感じています。より良い方法があれば、それについて聞いてみたいと思います。

+0

view.layer.borderWidthとview.layer.borderColorを使用しない理由はありますか? –

+0

これは私が尋ねようとしていたものです。なぜ高価なコアグラフィックスのものを使用するのですか、まさにそれを行うview.layerの2つのプロパティがあります。 – Aragunz

+0

これは、 'layer.border'が円形のビューに適合しないためです。つまり、UIBezierPathを介して角を丸めると、私が何を言っているのかが分かります。 'layer.border'は四角形です。 –

答えて

1

私が使用することを言う:

view.clipToBounds  = YES; 
view.layer.borderColor = [UIColor redColor]; 
view.layer.borderWidth = 2; 
view.layer.cornerRadius = 4; 

すべてのサブビューがクリップされており、uはウルボーダー:)を維持することができます。

+0

あなたの回答にcornerRadiusを追加してください –

+0

私はそれをコミュニティのために追加しましたOPはボーダーしか望んでいなかった。 :) – Aragunz

+1

ああ、あなたはコメントのセクションで私たちの会話に従っているhavnt :) –

関連する問題