在iOS中设置CALayer'borderWidth'和'cornerRadius',无法完全覆盖背景

时间:2015-07-24 04:34:14

标签: ios calayer

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    self.yuanjiao.backgroundColor = [UIColor blackColor];
    self.yuanjiao.layer.cornerRadius = self.yuanjiao.frame.size.width/2;
    self.yuanjiao.layer.masksToBounds = YES;
    self.yuanjiao.layer.borderWidth = 5;
    self.yuanjiao.layer.borderColor = [UIColor colorWithRed:1 green:1 blue:1 alpha:1].CGColor;

    //    self.yuanjiao.layer.shadowOffset = CGSizeMake(0, 0);
    //    self.yuanjiao.layer.shadowRadius = 0.0;
    //    self.yuanjiao.layer.shadowColor = [UIColor whiteColor].CGColor;
    //    self.yuanjiao.layer.shadowOpacity = 0.0;
}

效果:

i.stack.imgur.com/alPDr.png

边框没有完全覆盖背景。

设置shadowxxx无效。

1 个答案:

答案 0 :(得分:2)

这是图层属性的预期行为。如果您查看borderWidth borderWidth属性,您会发现: -

  

<强>讨论
  当此值大于0.0时,图层使用当前borderColor值绘制边框。边界通过此属性中指定的值从接收器的边界插入。 它在接收者的内容和子图层上方合成,并包含cornerRadius属性的效果。

     

此属性的默认值为0.0。

如果您需要使用blackColor填充blackColor部分,那么您有两个选择

  1. 没有必要设置一个颜色与视图内容不同的边框。你将无法看到边界。所有你会看到的是一个用borderColor填充的小圆圈。
  2. 如果您想保留边框并且还需要用黑色填充它,请将blackColor属性分配给select null num into #a union all select null union all select null union all select null union all select null union all select null union all select null select * into #b from (select rn = row_number()over (order by (select null)) from sys.objects A cross join sys.objects B) A where rn <=10 select #b.rn as numbers from #a cross join #b order by 1