将子视图添加到 self.view 但让某些子视图内容不被添加的子视图覆盖
Posted
技术标签:
【中文标题】将子视图添加到 self.view 但让某些子视图内容不被添加的子视图覆盖【英文标题】:Add subview to self.view but let certain subviews content not be covered by the added subview 【发布时间】:2016-02-20 17:10:46 【问题描述】:我想向 self.view 添加一个覆盖整个区域的子视图(如调光视图)。但在它下面有一些视图我不想受到添加的子视图的影响(我不希望这些视图有暗淡的效果)。这可以吗?
我知道有一个“简单”的解决方案;将那些我不想受到影响的子视图移到前面(在添加的子视图上),但这对我有不良影响,所以我不能使用该解决方案。
我的目标是 ios 8 及更高版本。
【问题讨论】:
你想用这个子视图做什么? 所以,为了清楚起见,您不能更改 z 位置? 【参考方案1】:您需要考虑创建一个CALayer mask 以从您的视图上方的图层中减去下方的子视图框架。
var path = UIBezierPath(rect: topView.frame)
var subviewPath1 = UIBezierPath(rect: subview1.frame)
var subviewPath2 = UIBezierPath(rect: subview2.frame)
path.usesEvenOddFillRule = true
path.appendPath(subviewPath1)
path.appendPath(subviewPath2)
var maskLayer = CAShapeLayer()
maskLayer.path = path.CGPath
maskLayer.fillRule = kCAFillRuleEvenOdd
maskLayer.fillColor = UIColor.whiteColor().CGColor
topView.layer.mask = maskLayer
【讨论】:
这就是我自己考虑的解决方案。干杯!以上是关于将子视图添加到 self.view 但让某些子视图内容不被添加的子视图覆盖的主要内容,如果未能解决你的问题,请参考以下文章
将子视图添加到 SKStoreProductViewController