6

私はUIView他のサブビューを含むを持っています。これにUIView境界線を適用しており、全体に境界線が適用されていUIViewます。そのためには、最初の画像を参照してください。

ここに画像の説明を入力してください

ただし、タイトルの周囲に境界線が表示されないようにして"Leaderboard"ください。その部分だけの境界線を削除するにはどうすればよいですか。下の画像を参照してください。ヘッダーボードの周囲に境界線がないことを確認してください。

ここに画像の説明を入力してください

4

2 に答える 2

2

いいえ、CALayer境界線はその動作をサポートしていません。

ただし、これを実装する必要がある場合は、別の方法を試すことができます。メインビューの両側に、背景色として目的の境界線の色を使用して、nポイント幅の不透明なサブビューを追加してみてください。

このコードを追加します:

CGSize mainViewSize = theView.bounds.size;
CGFloat borderWidth = 2;
UIColor *borderColor = [UIColor redColor];
CGFloat heightfromTop = 25;
UIView *leftView = [[UIView alloc] initWithFrame:CGRectMake(0, heightfromTop borderWidth, mainViewSize.height-heightfromTop)];
UIView *rightView = [[UIView alloc] initWithFrame:CGRectMake(mainViewSize.width - borderWidth, heightfromTop, borderWidth, mainViewSize.height-heightfromTop)];
leftView.opaque = YES;
rightView.opaque = YES;
leftView.backgroundColor = borderColor;
rightView.backgroundColor = borderColor;

[mainView addSubview:leftView];
[mainView addSubview:rightView];

これにより、両側にのみ境界線が追加されます。上部と下部についても同じアイデアを繰り返します。

注意heightfromTopボーダービューを表示したくない上部セクションの高さです。必要に応じて変更できます。

于 2013-03-13T06:29:41.130 に答える
1

をサブクラス化して、次のようUIViewに実装できます。drawRect

- (void)drawRect:(CGRect)rect
{       
      float borderSize = 3.0f;

     //draw the bottom border
     CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
     CGContextFillRect(context, CGRectMake(0.0f, self.frame.size.height - borderSize, self.frame.size.width, borderSize));

     //draw the right border
    CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextFillRect(context, CGRectMake(0.0f,0.0f, borderSize,self.frame.size.height));

     //draw the left border 
    CGContextSetFillColorWithColor(context, [UIColor blueColor].CGColor);
    CGContextFillRect(context, CGRectMake(self.frame.size.width - borderSize,0.0f, borderSize,self.frame.size.height));
}

UIView次に、必要なビューを作成するためにサブクラスを使用する必要があります。

于 2013-03-13T06:41:01.213 に答える