【问题标题】:Draw transparent views without overlapping IOS绘制不重叠IOS的透明视图
【发布时间】:2017-04-24 09:03:41
【问题描述】:

我有一个单元格,它是一个视图,包含其他视图,它从Expectations 图像形成一个单元格

我需要以不同的透明度显示它,并且设置背景颜色 alpha 值的情况不合适,仅将 alpha 设置为整个视图,在测试场中它设置了我需要的三个带有 alpha 的视图,但面对下一个麻烦

Reality

blue view alpha = 1.f 
red view alpha = 0.5f
green view alpha = 0.75f

透明视图相互重叠,在屏幕截图中,您可以看到透明红色视图在透明绿色视图下“可见”。 所以我需要排除下面的红色视图,顶部有绿色视图的面具。

有什么建议可以实现吗?任何返回 UIBezierPath 并排除图形或路径的方法?


更新 1

视图必须是透明的,因为在它们后面是图像,视图的目的是“评论单元格”。所以用户必须把cmets和背景图片彻底的cmets留下

【问题讨论】:

  • 如果您不想看到下面的内容,为什么要透明视图?您可以根据自己的期望调整颜色值。
  • “期望”图像下方是图像,这些单元格是照片上的 cmets。并且它需要具有不同的值是透明的。
  • 如果视图必须重叠,直接设置视图的alpha值肯定行不通。您需要覆盖视图绘制代码并在图形上下文中填充颜色。您需要有非常健壮的代码来计算应该用颜色“填充”的区域。
  • 我知道我需要自己画,但我希望这将是我的麻烦的最后一个实例,我正在寻找一些更优雅的方法,我采用“绿色视图”的形式”,并用面具或类似的东西排除“红色视图”的相交区域
  • 您的想法是正确的...您可以找到许多使用一条路径剪切另一条路径等的示例。一些示例:1.stackoverflow.com/questions/1021801/cgpathref-intersection 2.stackoverflow.com/questions/14411765/… 3.@987654325 @ .那么最复杂的部分是找到这些路径的“相对”位置以进行掩蔽/相交/剪辑。

标签: ios objective-c draw mask uibezierpath


【解决方案1】:

只需在透明视图后面添加一个白色视图即可。

还为颜色而不是视图提供 alpha。

【讨论】:

  • 我不能设置白色背景,背景是图片,视图应该是透明的
猜你喜欢
  • 2023-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 2014-05-21
相关资源
最近更新 更多