屏蔽视图,使其仅显示在封闭的Bezier路径之外

时间:2014-01-19 03:07:17

标签: uiview mask uibezierpath

我有一个封闭的Bezier路径。它当前正在以正常方式屏蔽UIView,这意味着只有视图中位于路径边界内的部分才可见。我现在已经决定了一个美学特征,如果有一种方法可以用相同的bezier路径进行反掩模,那么它很容易实现。我的意思是,现在我想要一个不同的UIView,它目前在路径之外完全可见,一旦与Bezier路径相交就被切断。有没有办法将这个其他UIView的掩码设置为贝塞尔路径的反转?

1 个答案:

答案 0 :(得分:0)

让我们说必须被屏蔽的视图实例是maskedView(mview -red color) 并且假设有一个backgroundView(bview - green)位于这个maskedView下面 如果你只是屏蔽视图,那么maskedView路径内的区域将是可见的,路径之外的区域将用backGroundView填充。

enter image description here

所以,我们说当bview在后台时mView被屏蔽。另一种说法是bView是前面的,并且当mview在bView下面时被反掩蔽。尽管我们应用了掩码mView,屏幕显示bView是反屏蔽的

因此,我们为反掩盖一种观点创造了这样一种幻觉。

程序解释:
view1 - 反掩码此视图(图像的绿色视图)
view2 - backgroundView(图像的红色视图)

*[self.view addSubview:view1];
*[self.view insertSubview:view2 aboveSubview:view1];
//now view2 is top of view1
*apply bezier path to view2 not view1.

希望这有帮助。