【问题标题】:masking presented view controller with CAShapeLayer also mask the presenting view controller使用 CAShapeLayer 屏蔽呈现的视图控制器也屏蔽呈现的视图控制器
【发布时间】:2017-05-03 08:58:11
【问题描述】:

就像标题所说的那样,我有一个第一个视图控制器 (VC1),它呈现第二个 (VC2) 模式。在 VC2 上,我在 self.view.layer.mask 上应用了一个可调整大小的蒙版,它通过平移手势改变其大小,但是当蒙版调整大小时,我看不到 VC2 后面的 VC1,我只看到黑色,这是应用程序的 @987654324 的 .backgroundColor @。 VC2 的self.view 上的self.view.clipToBoundsself.view.layer.masksToBounds 都设置为true。这是为什么?谢谢

错误视频:https://youtu.be/9Kda10Sl2g8

我设法绕过它,正如@nguyenbao95 在他的评论中建议的那样:将另一个 UIView 添加到 VC2 的 self.view (此视图在快照上方),然后将所有内容添加到此视图。并屏蔽此视图。

我怀疑当我以模式呈现 VC2 时,VC1 在 VC2 后面不再可见,直到再次需要它。

【问题讨论】:

    标签: ios swift mask cashapelayer


    【解决方案1】:

    在展示第二个 VC 之前,先对第一个 VC 进行截图。然后将带有此图像的 UIImageView 添加到第二个 VC。

    希望它能解决你的问题

    【讨论】:

    • 我应该这样做吗? CAShapeLayer 掩码是否应该掩蔽其背后的所有视图层次结构或仅掩蔽它所应用的视图?
    • 我试过了,它也只是掩盖了快照.. 即使我将snapshotView 发送到 VC2 的 self.view 后面,它也会隐藏 VC2 的其余部分
    • 我还是没看懂你的回答,能给我一张图吗?
    • 这里是with snapshot,这里是without snapshot
    • 试试这个方法:在VC2的self.view中添加另一个UIView(这个view在snapshot之上),然后把你所有的内容都添加到这个view中。并掩盖这个观点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    • 2011-12-08
    相关资源
    最近更新 更多