如果我的 UIViews 边框颜色 alpha 小于 1.0,如何避免颜色重叠?

Posted

技术标签:

【中文标题】如果我的 UIViews 边框颜色 alpha 小于 1.0,如何避免颜色重叠?【英文标题】:How can I avoid overlap of colors if my UIViews border color alpha is less than 1.0? 【发布时间】:2014-03-11 22:16:10 【问题描述】:

我将UIView 的 alpha 设置为 0.5,其边框颜色 alpha 也是 0.5,它们是类似的灰色阴影,但在外部显示为较厚的灰色。我猜这是因为这两种颜色混合在一起。有没有办法不只是在顶部添加一个边框,我可以添加一个边框来取代它下面的像素?

【问题讨论】:

【参考方案1】:

你是对的,解决这个问题的唯一方法是将你的 0.5 alpha 视图放在一个容器视图中并稍微插入它并为容器添加边框。

【讨论】:

这样就解决了。唯一会让人讨厌的是,我有一个圆角,所以我必须找到超级视图的半径,并计算子视图的半径,也使用边框宽度。 你可以继承UIView并覆盖drawRect: 或子类 UIView 以添加一个比其视图层大一个像素的 CALayer,并根据需要具有边框颜色和边框宽度。对于一次性的,您可以向视图控制器添加代码,该代码将通过代码向视图添加一个层,而不是继承 UIView。我怀疑宽度增加单个像素是否需要调整角半径,除非视图非常小。【参考方案2】:

我决定将其发布为答案而不是评论: 另一种方法是继承 UIView 以添加一个比其视图层大一个像素的 CALayer,并根据需要具有边框颜色和边框宽度。对于一次性的,您可以向视图控制器添加代码,该代码将通过代码向视图添加一个层,而不是继承 UIView。我怀疑宽度增加一个像素是否需要调整角半径,除非视图非常小。 – Duncan C 37 秒前编辑

【讨论】:

以上是关于如果我的 UIViews 边框颜色 alpha 小于 1.0,如何避免颜色重叠?的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 边框颜色

更改自定义颜色的边框颜色

悬停时动画 alpha 属性

Swift 4 - UITextfield 边框半径颜色问题

如何设置自定义小部件的背景颜色和边框宽度?

微信小程序去掉button的边框