如何从UIView的某些部分删除边框?

时间:2013-03-13 06:15:22

标签: ios uiview calayer

我的UIView包含其他子视图。我正在对此UIView应用边框,并且边框适用于整个UIView。为此,请看第一张图片。

enter image description here

但是不要让标题周围的边框显示为"Leaderboard"。如何仅删除该部分的边框。请参阅下面的图片,并在其中看到标题排行榜周围没有边框..

enter image description here

2 个答案:

答案 0 :(得分: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];

这将仅为双方添加边框。同样重复顶部和底部的想法。

NB heightfromTop是您不希望存在边框视图的顶部区域的高度,您可以根据需要对其进行更改

答案 1 :(得分: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来创建所需的视图。