UIView圆角和阴影在4条边上留下微小的错误像素

时间:2016-07-27 20:41:44

标签: ios objective-c swift uiview

我想要一个带圆角和阴影的UILabel(在边界上,而不是在文本上)

我几乎有这个工作,除了在所有4个边缘上错误颜色的这个讨厌的几个像素("剩余""舍入"):

enter image description here

这是我的自定义可重用视图:

enter image description here

我已将各种视图设置为不同颜色,以便能够尝试查看哪个视图行为不正常。

顶级视图是我做投影的地方(backgroundColor = green):

    view.layer.shadowColor = UIColor.blackColor().CGColor
    view.layer.shadowOpacity = 0.2
    view.layer.shadowOffset = CGSizeMake(3, 3);
    view.layer.shadowRadius = 3

请注意,讨厌的错误像素确实是绿色的。

中间视图(" BackgroundView")是我做圆角的地方(backgroundColor = red):

    backgroundView.layer.cornerRadius = 3
    backgroundView.layer.masksToBounds = true

如果我这样做,这些边缘会从绿色变为白色。我不知道白色的来源:

view.backgroundColor = UIColor.greenColor().colorWithAlphaComponent(0.0)

如果我尝试了一个不优雅的黑客并将顶级视图的backgroundColor设置为粉红色背景,那么它会像我的投影阴影一样混乱:

enter image description here

我是Swift和iOS的新手,我当然知道,我正在做一些n00b' ish。

更新:我正在尝试将其设置为自定义可重用视图(xib + swift文件)。我发现使用这种方法,我必须使用多个视图,我不能完全正确,但如果我只是尝试在Main.storyboard中手动创建一次性视图(投影+圆角) ,它工作得很好(甚至只有1个视图!)。那是为什么?

1 个答案:

答案 0 :(得分:0)

您需要使用圆角矩形路径(CGPathCreateWithRoundedRect)将shadowPath设置到视图图层