用一个UIView屏蔽多个iOS UIViews

是不是可能有一个UIView是一个maskedView超过1视图? 我在下面的UIViews上设置maskView,但只有最后一个保留掩码设置。

imageOne.maskView = viewMask labelThing.maskView = viewMask labelOtherThing.maskView = viewMask labelLastThing.maskView = viewMask labelMaskThis.maskView = viewMask //the only masked view 

解决这个问题,我评论了最后一行,并证实了我的怀疑。

  imageOne.maskView = viewMask labelThing.maskView = viewMask labelOtherThing.maskView = viewMask labelLastThing.maskView = viewMask //now gets the mask //labelMaskThis.maskView = viewMask 

有没有办法让我的viewMask: UIView应用于多个视图?

看起来像答案是否定的,你不能使用相同的UIView实例来屏蔽多个视图:显然,屏蔽视图的图层正被集成到正在被屏蔽的视图的层次结构中。

最好的办法是为每一个你试图屏蔽的视图创build一个新的UIView遮罩实例。 或者,您可以通过NSKeyedArchiver复制现有的视图:

 let archivedData = NSKeyedArchiver.archivedDataWithRootObject(viewMask) let viewMaskCopy = NSKeyedUnarchiver.unarchiveObjectWithData(archivedData) as! UIView 

虽然我会build议简单地创build新的遮罩视图实例的方式,你首先实例化viewMask

您也可以在故事板中的一个包含UIView中将蒙面视图分组,然后将蒙版应用于该视图。