如何让 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 上设置一个属性以使其尊重超级视图掩码吗?

我可以通过将UIViewself.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?

如何让 Vim 尊重 .editorconfig?

如何让 CronJob 尊重夏令时?