如何使UIPageViewController不clipToBounds

cyn*_*six 4 paging ios uipageviewcontroller

我需要将UIView覆盖在UIPageViewController上,希望它可以让我关闭clipsToBounds,然后将交互式边界区域的大小调整为较小的高度,并在非交互式/非剪切区域的顶部放置另一个视图。

不幸的是,UIPageViewController会以某种方式调整childViewController的大小,无论如何都会对其进行裁剪。

我想要的是这样的:

我该如何实现?我找不到执行此操作的示例,并且确实尝试使用UICollectionViewController代替分页,但是它没有页面之间的平滑间隙,就像UIPageViewController一样。

Bri*_*tta 6

以下在 Swift 中对我有用:

pageViewController.clipsToBounds = false
pageViewController.view.clipsToBounds = false
for view in pageViewController.view.subviews {
    view.clipsToBounds = false
}
Run Code Online (Sandbox Code Playgroud)

类似于 Vitaly 的回答,但使用循环来确保所有子视图都得到处理。


小智 5

UIPageViewController的视图在childViewController的实际视图之前的子视图层次结构中具有另一个UIView(更确切地说是_UIQueuingScrollView)。因此,要禁用clipsToBounds,您应该执行以下操作:

UIPageViewController *pageViewController = ...;
pageViewController.view.clipsToBounds = NO;
[[pageViewController.view subviews].firstObject setClipsToBounds:NO];
Run Code Online (Sandbox Code Playgroud)