首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使UIView仅对某些视图透明

使UIView仅对某些视图透明
EN

Stack Overflow用户
提问于 2018-10-15 13:38:47
回答 1查看 256关注 0票数 0

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

附注:我看过这个post,它肯定是相关的,但答案中的链接是死的。

提前感谢!

编辑

这就是我的意思:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-15 14:35:58

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

因此,在链接中,我们有一个大的透明圆圈,我们希望阻挡背景右侧的小圆圈。

你能做的就是这样。

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

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

因此视图层次结构将如下所示

真实显示视图(圆形shape)

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

然后,您所要做的就是保持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


}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52810307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档