6

我正在使用一个从屏幕边缘略微偏移的导航控制器。当我尝试从导航控制器框架中为子视图设置动画时,它们会被剪裁。我尝试设置:

navigationController.view.clipsToBounds = NO;
navigationController.view.layer.masksToBounds = NO;

但无济于事。

我附上了一个插图:

插图

4

2 回答 2

2

解决了。正如您在 UINavigationController 的视图层次结构中看到的: UINavigationController 的视图层次结构

UINavigationController 有一个名为 UILayoutContainerView 的子视图。那么 UILayoutContainerView 有一个名为 UINavigationTransitionView 的子视图。这种观点是有问题的。你必须为它打开 clipsToBounds。(此视图的默认设置为打开)。那么 UINavigationTransitionView 有一个名为 UIViewControllerWrapperView 的子视图。UILayoutContainerView 和 UIViewControllerWrapperView 的 clipsToBounds 默认关闭。但是 UINavigationTransitionView 的 clipsToBounds 默认是打开的。您必须在代码中将其关闭:

self.navVc.view.subviews[0].clipsToBounds = false
于 2018-02-26T11:03:57.033 回答
1

我遇到了几乎同样的问题,但导航栏内容超出了它的框架。尝试这个:

self.navigationController.navigationBar.clipsToBounds = YES;

要解决内部视图的问题,请尝试更改 viewController 的 clipsToBounds 属性:

for (UIViewController *vc in self.navigationController.viewControllers) {
    vc.view.clipsToBounds = YES;
}

我不确定,它会起作用。

于 2013-09-11T07:31:30.820 回答