如何让 UIImageView 尊重它的 superview.layer.mask
Posted
技术标签:
【中文标题】如何让 UIImageView 尊重它的 superview.layer.mask【英文标题】:How to make UIImageView respect its superview.layer.mask 【发布时间】:2016-12-21 02:15:31 【问题描述】:我有一个UIView
,其中self.layer.mask
设置为CAShapeLayer
。如果我添加UILabel
作为子视图,UILabel
会被正确屏蔽,但如果我添加UIImageView
,则忽略该屏蔽。我究竟做错了什么?我需要在UIImageView
上设置一个属性以使其尊重超级视图掩码吗?
我可以通过将UIView
的self.layer.contents
直接设置为我要显示的CGImage
来获得我想要的结果,而不是将UIImageView
添加为子视图,但这仅处理单个@ 987654332@.
【问题讨论】:
屏蔽 UIImageView 是完全合法的并且是正常行为。如果它不起作用,那么你做错了什么。显示您的代码! 你能展示你的代码吗? 【参考方案1】:您所描述的内容非常适合 UIImageView,正如此屏幕截图所示:
这是一个以 CAShapeLayer(带有“椭圆”路径)作为掩码,以 UIImageView 作为子视图的视图。
【讨论】:
【参考方案2】:问题在于 UIImageView 框架被调整为完全落在可见区域内,因此没有明显的剪裁。这是对一些复杂的现有代码的更改,所以我没有立即看到。
【讨论】:
但是你没有透露。根据您实际提出的问题,我的回答向您证明,您的子视图是 UIImageView 与问题无关,因此让您走上了正轨。以上是关于如何让 UIImageView 尊重它的 superview.layer.mask的主要内容,如果未能解决你的问题,请参考以下文章
约束 UIImageView 高度以尊重 UITableViewCell 中的动态 UILabel 高度
如何让 UIImageView 的边缘捕捉到屏幕的边缘(超级视图)?
如何在 UIButton 中将 UIImageView 与它的文本居中?
如何让 AVCaptureSession 和 AVPlayer 尊重 AVAudioSessionCategoryAmbient?