Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIScrollView-需要x位置/宽度的约束,需要y位置/高度的约束_Ios_Objective C_Uiscrollview_Autolayout - Fatal编程技术网

Ios UIScrollView-需要x位置/宽度的约束,需要y位置/高度的约束

Ios UIScrollView-需要x位置/宽度的约束,需要y位置/高度的约束,ios,objective-c,uiscrollview,autolayout,Ios,Objective C,Uiscrollview,Autolayout,我有一个如下的视图层次结构(基于其他答案和苹果公司关于使用UIScrollView的高级自动布局指南): ScrollView所需的两个步骤是: 为ScrollView的位置和大小(帧)设置约束:使用与任何其他视图相同的方法 设置内容大小的约束:如果您是在interface builder中而不是以编程方式执行此操作,请确保ScrollView的子视图中有涉及ScrollView所有边(前导、尾随、顶部、底部)的约束 步骤1一开始运行良好,结果如下: 如预期的那样,位置和大小没有问题。我现

我有一个如下的视图层次结构(基于其他答案和苹果公司关于使用UIScrollView的高级自动布局指南):

ScrollView所需的两个步骤是:

  • 为ScrollView的位置大小(帧)设置约束:使用与任何其他视图相同的方法
  • 设置内容大小的约束:如果您是在interface builder中而不是以编程方式执行此操作,请确保ScrollView的子视图中有涉及ScrollView所有边(前导、尾随、顶部、底部)的约束
  • 步骤1一开始运行良好,结果如下:

    如预期的那样,位置大小没有问题。我现在只需要在Interface Builder中使用步骤2定义内容大小(内容高度和内容宽度)

    现在,我添加了接触ScrollView所有4条边的约束,如下所示:

    突然,ScrollView不再知道它的位置和大小


    我已经看过其他答案,并遵循了各种步骤,但似乎无法解决这个问题。很抱歉,由于隐私问题,我无法发布故事板截图

    滚动视图一开始可能有点棘手。你真的有三个部分:

  • 滚动视图的实际帧
  • 滚动视图中包含的子视图的实际帧
  • 滚动视图的contentSize—即它在任一方向上滚动的距离
  • 因此,1。这很直截了当

    第二部分似乎也很简单,只是我们倾向于将子视图“固定”到它们的超级视图的内部边缘。对于滚动视图子视图,这些约束定义了contentSize。您还必须确保子视图具有“大小”

    从一个子视图开始,您将:

  • 将滚动视图的约束设置为“正常”
  • 设置子视图的大小-仅出于演示目的,将其设置为100 x 100
  • 将子视图的所有四条边固定到滚动视图的四条边上
  • 运行应用程序。假设您设置了背景颜色,以便了解所看到的内容,您应该会看到滚动视图的位置和大小与您预期的一致。。。您应该会看到100 x 100的子视图位于滚动视图中的某个位置。。。而且你可能无法进行任何实际的滚动

    如果返回并将子视图更改为(例如)100 x 800,并且其底部约束仍固定在滚动视图(子视图的超级视图)的底部,然后再次运行应用程序。。。您应该能够在子视图的整个800磅高度上下滚动

    思考的方式是:滚动视图的内容——无论是一个子视图还是多个子视图——必须定义自己的大小,这将定义可滚动区域(滚动视图的contentSize)

    希望这有意义

  • 将滚动视图的顶部、底部、前导和尾随约束设置为其superview为0

  • 将滚动视图内的视图设置为0,并将其superview的顶部、底部、前导和尾随约束设置为0

  • 选择滚动视图内的视图,转到尺寸检查器并将“固有尺寸”设置为“占位符”


  • 谢谢导致问题的原因是没有明确定义ScrollView的子视图(我的通用ContentView)的大小。我还必须清楚地定义所有子视图的大小ContentView@ChrisAllinson当您将内部大小设置为“占位符”时,您会告诉Xcode布局系统视图的大小取决于其内容