Ios iPhone 6和iPhone 6 Plus上页面视图控制器的奇怪行为

Ios iPhone 6和iPhone 6 Plus上页面视图控制器的奇怪行为,ios,objective-c,uipageviewcontroller,iphone-6,pagecontrol,Ios,Objective C,Uipageviewcontroller,Iphone 6,Pagecontrol,我试图用三个页面实现页面视图控制器。我已经做过了,它在3.5英寸和4英寸屏幕的iPhone上运行得非常好,但是4.7英寸和5.5英寸屏幕出现了一些问题 我发现隐藏UIPageViewController的标准页面控件是导致此错误的原因:当页面控件被隐藏时,UIPageVC的视图会更改其高度(+页面控件视图的高度) “我的页面内容视图”控制器对背景图像视图有限制,以适应所有大小 这是第一页: 这是第二页: 这是第三页,好的,我们已经到了最后一页: 但看看当我们返回到第二个页面时会发生什么(页

我试图用三个页面实现页面视图控制器。我已经做过了,它在3.5英寸和4英寸屏幕的iPhone上运行得非常好,但是4.7英寸和5.5英寸屏幕出现了一些问题

我发现隐藏UIPageViewController的标准页面控件是导致此错误的原因:当页面控件被隐藏时,UIPageVC的视图会更改其高度(+页面控件视图的高度)

“我的页面内容视图”控制器对背景图像视图有限制,以适应所有大小

这是第一页:

这是第二页:

这是第三页,好的,我们已经到了最后一页:

但看看当我们返回到第二个页面时会发生什么(页面内容控制器的视图在左侧几个像素处完全移动):

滑动到第一页-结果相同:

但是在第一页之后转到第二页时,看看我们有什么!现在,通过x查看位于正确位置的页面内容控制器:

转到最后一页:

让我们回到第二页!天哪****!视图再次被某个对象移动:

转到第一页,全部位于“右侧”(错误的位置):

从第一页返回第二页。所有人都处于良好和正确的位置:

所以,我的问题是这个UIPageViewController发生了什么?我认为我的约束被打破了,但我的日志中没有关于它的任何信息,在故事板中没有与约束相关的错误

当我使用两种方法“presentationCountForPageViewController:,PresentationIndexFormageViewController:”时,一切都很好,但在按钮上方会出现一条高度等于页面控件视图高度的白线(因此,我需要通过删除上面列出的两种方法来隐藏它)


提前感谢您对未来的建议

我修好了!但这不是正确的方法,因为这是iOS端的bug

因此,当您试图隐藏UIPageViewController的页面控制视图时,iPhone 6和iPhone 6 Plus上的私有“pageSpacing”属性由于意外原因而被破坏。很难从观点上看到和理解它。在我的例子中,iPhone 6的InterPageSpacing属性减少了4,而iPhone 6 Plus的值减少了6。所以,如果您试图为iPhone4或5设置pageSpacing属性,您将看到页面之间有一条白线,但在6和6上,加上这条线,第二个控制器的视图将移动到剩下的几个像素

目前,我只是在初始化UIPageViewController时为UIPageViewController选项InterpageSpacingKey设置不同的值:

- (id)initWithTransitionStyle:(UIPageViewControllerTransitionStyle)style navigationOrientation:(UIPageViewControllerNavigationOrientation)navigationOrientation options:(NSDictionary *)options
{
    NSMutableDictionary *dictionary = [NSMutableDictionary new];
    NSNumber *pageSpacing =
    IS_IPHONE_4_OR_LESS
    ? @(0)
    : IS_IPHONE_5
    ? @(0)
    : IS_IPHONE_6
    ? @(4)
    : @(6);

    [dictionary setValue:pageSpacing forKey:UIPageViewControllerOptionInterPageSpacingKey];

    self = [super initWithTransitionStyle:style navigationOrientation:navigationOrientation options:dictionary];
    return self;
}

是的,修复程序很脏,但我没有找到其他方法来修复它,尤其是因为它是苹果的bug。

wow!已经2年了,现在我在iphone5c和ios10.3上体验到了这一点。您是如何调试并获得断开的
pagespacking
值的?我试着用捕获屏幕调试,调试器显示所有东西都在正确的位置…@Eddie,我已经忘记了。可能这只是一种经验性的方法:)我建议您在故事板中完全重新创建视图控制器,并用完全干净的方式编译它。也许对你有帮助。