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

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

【问题讨论】:

    标签: ios objective-c uiview border calayer


    【解决方案1】:

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

    【讨论】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-27
      • 1970-01-01
      相关资源
      最近更新 更多