我正在使用一个从屏幕边缘略微偏移的导航控制器。当我尝试从导航控制器框架中为子视图设置动画时,它们会被剪裁。我尝试设置:
navigationController.view.clipsToBounds = NO;
navigationController.view.layer.masksToBounds = NO;
但无济于事。
我附上了一个插图:
我正在使用一个从屏幕边缘略微偏移的导航控制器。当我尝试从导航控制器框架中为子视图设置动画时,它们会被剪裁。我尝试设置:
navigationController.view.clipsToBounds = NO;
navigationController.view.layer.masksToBounds = NO;
但无济于事。
我附上了一个插图:
解决了。正如您在 UINavigationController 的视图层次结构中看到的:
UINavigationController 有一个名为 UILayoutContainerView 的子视图。那么 UILayoutContainerView 有一个名为 UINavigationTransitionView 的子视图。这种观点是有问题的。你必须为它打开 clipsToBounds。(此视图的默认设置为打开)。那么 UINavigationTransitionView 有一个名为 UIViewControllerWrapperView 的子视图。UILayoutContainerView 和 UIViewControllerWrapperView 的 clipsToBounds 默认关闭。但是 UINavigationTransitionView 的 clipsToBounds 默认是打开的。您必须在代码中将其关闭:
self.navVc.view.subviews[0].clipsToBounds = false
我遇到了几乎同样的问题,但导航栏内容超出了它的框架。尝试这个:
self.navigationController.navigationBar.clipsToBounds = YES;
要解决内部视图的问题,请尝试更改 viewController 的 clipsToBounds 属性:
for (UIViewController *vc in self.navigationController.viewControllers) {
vc.view.clipsToBounds = YES;
}
我不确定,它会起作用。