iOS底部布局指南位于错误位置

iOS底部布局指南位于错误位置,ios,objective-c,autolayout,Ios,Objective C,Autolayout,你的思想是什么 我带着严重的头痛来到你身边,这是一个无法解决的障碍 问题如下: 我有一个UIPageViewController,它有四个页面和两种类型的内容UIViewController—ContentViewController和UserAccessViewController。前三个页面只是三个ContentViewController,其中包含不同的内容(不同的图像和文本)。最后一个页面是UserAccessViewController,它承载一个GUI供用户登录或注册。UIScrol

你的思想是什么

我带着严重的头痛来到你身边,这是一个无法解决的障碍

问题如下:

我有一个UIPageViewController,它有四个页面和两种类型的内容UIViewController—ContentViewController和UserAccessViewController。前三个页面只是三个ContentViewController,其中包含不同的内容(不同的图像和文本)。最后一个页面是UserAccessViewController,它承载一个GUI供用户登录或注册。UIScrollView类的UserAccessViewController的“主”UIView,可能值得注意

ViewController上的所有控件都被约束到底部布局导向作为起点。你可以把它想象成一股水流。最底部的控件约束到底部布局导向,下一个控件约束到最底部,依此类推。(请参见下面的旁注,了解为什么所有内容都受底部约束,而不是顶部布局指南的约束)

因此,我们来到了手头的问题。首先,这只发生在第四个页面UserAccessViewController上

在iOS 8.1上,一切正常,符合预期,但在iOS 7.1上,底部布局指南无法正确定位,因此,会将我的所有内容从屏幕上删除(请记住,所有内容都限制在底部布局指南之上)

iOS 8.1框架:

ui类的视图\u ui布局指南的框架:[0.00,0.00]-[0.00,20.00]
->TOP
ui类的视图\u ui布局指南的框架:[0.00538.00]-[0.000.00]
->底部(同上!)

iOS 7.1框架:

ui类的视图\u ui布局指南的框架:[0.00,0.00]-[0.00,20.00]
->TOP
ui类的视图\u ui布局指南的框架:[0.00,0.00]-[0.00,0.00]
->底部(WTF?!)

我试图纠正这个问题的事情:

  • 完全删除约束,以查看约束是否会以某种方式改变底部布局指南。 -->结果:阴性。移除约束并没有改变任何东西。底部布局指南仍然未正确定位

  • 就这样!我不知道我能改变什么

  • 希望集体蜂群意识会认为我值得帮助


    旁注:如果你想知道为什么我把重点放在底部而不是顶部,原因在于,当控件被约束到顶部布局作为参考时,当约束在非第一个页面的viewDidLoad中被修改时,它会导致抽搐-控件会停止我无法用不同的方法来解决这个问题,就像使用底部的布局指南而不是顶部的布局指南一样


    这是有道理的,但UIScrollView必须限制为 根据该链接的superview--否则它无法正常工作。 如果无法做到这一点,您需要重新设计, 不幸的是…不确定这个想法是否适用,但我经常 一个透明的背景“尺寸视图”,位于 给定容器。大小调整视图约束到容器,并且 其他一切都受到它的约束,使它更容易处理 某些类型的约束


    答案是由Anna Dickinson提供的,因此我将用引用的答案将此标记为已解决。

    您可能想到了这一点,但以防万一:您是否限制了边距?我认为iOS 7不支持边距。当我无意中这样做时,我会收到警告(很容易做到——这是iOS 8的默认设置)@AnnaDickinson-我没有限制边距,“相对于边距”的所有限制都已检查。我确实注意到一件事,当我将“main”UIView的类从UIScrollView交换到UIView时,它可以工作,但我的“move-the-keyboard-when-it-cover-a-textfield”机制已损坏。您的UIScrollView是否约束到其superview?它必须是:UIScrollView不约束到其superview,因为UIScrollView是“容器”无法在这些视图上设置UserAccessViewController的视图和约束。在这种特殊情况下,它不需要任何约束。这是有意义的,但UIScrollView必须根据该链接约束到其superview,否则它无法正常工作。如果无法做到这一点,则需要重新编写design,不幸的是…不确定这个想法是否适用,但我经常在给定容器中的所有内容后面放置一个透明的背景“大小调整视图”。大小调整视图被约束到容器,其他所有内容都被约束到容器。这使得处理某些类型的约束更加容易。