是否有可能让UIView成为多于1个视图的maskedView?我在以下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
是否有办法应用于多个视图?
答案 0 :(得分:3)
看起来答案是否定的,您不能使用相同的UIView
实例来屏蔽多个视图:显然,屏蔽视图的图层正在集成到视图的图层层次结构中被蒙面了。
最好的方法是为您要屏蔽的每个视图创建一个新的UIView
蒙版实例。或者,您可以通过NSKeyedArchiver
复制现有视图:
let archivedData = NSKeyedArchiver.archivedDataWithRootObject(viewMask)
let viewMaskCopy = NSKeyedUnarchiver.unarchiveObjectWithData(archivedData) as! UIView
虽然我建议您首先以实例化viewMask
的方式创建新的屏蔽视图实例。
您还可以将屏蔽的视图分组到故事板中的UIView
中,然后将蒙版应用于该视图。