【问题标题】:Make UIView Transparent to Only Certain Views使 UIView 仅对某些视图透明
【发布时间】:2019-03-19 12:02:54
【问题描述】:

我目前有一个 UIView,它是完全透明的,并且放在许多其他标签之上。所有标签后面都有一个背景图像,并且由于所有标签都是透明背景的,我可以通过它们看到图片。然后,由于放置在标签顶部的这个视图也设置为透明,我可以看到它后面的标签。有没有办法让这个视图只对背景图像透明?它,当我看透它时,我只看到背景图像而不是标签,就好像标签在这个视图下不存在一样。

附:我看过这个post,这绝对是相关的,但答案中的链接已经失效。

提前致谢!

编辑

这就是我的意思:

箭头指向的透明视图不在滚动视图中,而是悬停在其上方。滚动视图中会有很多文本内容,因此当它们通过指向视图下时,它们将是可见的。如何让这个悬停视图只反映它后面的大图像视图,而不是它后面的任何文本?也就是说,我希望当文本在此视图下通过时,它们是不可见的,并且视图始终反映背景图像。而且,由于它是一个不断变化的图像而不是纯色,我不能只设置这个悬停视图的颜色来匹配背景。

【问题讨论】:

  • 如果您希望标签消失,请随时隐藏标签。请澄清我是否遗漏了什么。
  • 如果所有标签都添加到一个视图中,并且这个视图是透明的,放置在背景图像视图之上,那么你可以在需要时轻松地显示隐藏这个视图,类似于 Ratul 的评论,但有一个容器视图所有标签
  • 请查看更新后的问题@RatulSharker
  • 请查看更新后的问题@AnnieDev

标签: ios swift uiview core-graphics transparency


【解决方案1】:

我真的不明白你的问题,但我会给你一个解决方案,你提供的链接。

所以在链接中,我们有一个大的透明圆圈,我们希望将背景中的小圆圈挡在右边。

你能做的就是这个。

您创建了两个相同的视图。

第一个视图是您的正常视图,您可以在上面显示您想要的任何内容。第二个你将是一个背景视图,它与第一个视图具有相同的位置和相同的大小。但问题是,backgroundView 将显示与真实背景视图相同的背景颜色。

所以视图层次结构会是这样的

  1. 显示视图(圆形)
  2. BackgroundView(圆形大小,与第一个视图相同的位置,与真实背景视图相同的颜色,在本例中为蓝色)
  3. 真实背景视图(蓝色)。

那么您所要做的就是将 backgroundView 的 alpha 值保持为 1,并将第一个视图的 alpha 值更改为 0.6

示例代码

 private func addCircle(){
    // adding a blue circle
    let circleView = UIView()
    circleView.backgroundColor = .blue
    circleView.alpha = 0.5

    view.addSubview(circleView)

    circleView.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
    circleView.center = view.center
    circleView.layer.cornerRadius = 100 / 2
    circleView.layer.masksToBounds = true


    // adding a backgroundView
    let backgroundView = UIView()
    backgroundView.backgroundColor = .red
    view.insertSubview(backgroundView, belowSubview: circleView)

    backgroundView.bounds = CGRect(x: 0, y: 0, width: 100, height: 100)
    backgroundView.center = view.center
    backgroundView.layer.cornerRadius = 100 / 2
    backgroundView.layer.masksToBounds = true


}

【讨论】:

  • 您也可以创建一个包含两个图层的自定义视图。它会更干净,并且会使用更少的内存。但我给你的是一个简单易懂的解决方案。
  • 请查看更新后的问题。这是一张背景图片。 @programmingBeginner
  • @Edward 那么你也这样做吗?只需将 backgroundView 设为带有图像但没有您正在谈论的标签的视图?如果需要滚动,则背景视图将是带有图像的滚动视图,但会与顶部滚动视图一起移动
  • 问题是 - 图像的一部分。图像必须看起来是连续的,并且很难在原地进行裁剪
  • @Edward 背景图片是否随着滚动视图滚动?
猜你喜欢
  • 1970-01-01
  • 2021-01-19
  • 2011-01-21
  • 2011-09-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 2012-04-08
相关资源
最近更新 更多