autolayout ios中scrollview子视图的动态高度

autolayout ios中scrollview子视图的动态高度,ios,uiscrollview,autolayout,constraints,subview,Ios,Uiscrollview,Autolayout,Constraints,Subview,我正在从xib创建一个UIScrollView,其中3个视图有2个UIView,中间是一个UIImageView。当我设置约束时,Xcode要求设置Y位置约束。但问题是Y位置约束阻止了Scrollview向下滚动,并自动调整了在横向模式下看起来很难看的视图 当我删除该约束时,它会要求固定子视图的高度。我搜索了很多,但我是自动布局新手,所以不了解很多解决方案。任何帮助都很好。您必须在内容视图中设置所有高度限制。 但您也希望内容的高度与屏幕大小成比例 为此,将imageview的高度约束[equa

我正在从xib创建一个UIScrollView,其中3个视图有2个UIView,中间是一个UIImageView。当我设置约束时,Xcode要求设置Y位置约束。但问题是Y位置约束阻止了Scrollview向下滚动,并自动调整了在横向模式下看起来很难看的视图


当我删除该约束时,它会要求固定子视图的高度。我搜索了很多,但我是自动布局新手,所以不了解很多解决方案。任何帮助都很好。

您必须在内容视图中设置所有高度限制。 但您也希望内容的高度与屏幕大小成比例

为此,将imageview的高度约束[equal | proportional | a-computation-of]指定给包含UISCrollView的视图

在两个视图之间分配约束时跳过层次结构似乎很奇怪,这两个视图不是彼此的直接祖先/兄弟,但在scrollview中(至少)是完全可以接受的

您基本上是告诉scrollview它的内容有一个已知的大小,同时设置此内容以适应屏幕大小(如果根uiview的约束设置正确)

这是一个基本的想法,通过编程实现,然后您可以探索其他解决方案


不幸的是,ios中的约束系统在涉及单个约束的多个视图的更复杂方程式时非常糟糕。

您必须在内容视图中设置所有高度约束。 但您也希望内容的高度与屏幕大小成比例

为此,将imageview的高度约束[equal | proportional | a-computation-of]指定给包含UISCrollView的视图

在两个视图之间分配约束时跳过层次结构似乎很奇怪,这两个视图不是彼此的直接祖先/兄弟,但在scrollview中(至少)是完全可以接受的

您基本上是告诉scrollview它的内容有一个已知的大小,同时设置此内容以适应屏幕大小(如果根uiview的约束设置正确)

这是一个基本的想法,通过编程实现,然后您可以探索其他解决方案


不幸的是,ios中的约束系统在涉及单个约束的更多视图的更复杂的方程时非常糟糕。

UIScrollView
在添加约束时可能很棘手。您应该始终添加一个子视图,该子视图将作为您的
UIScrollView
的内容视图,并且所有后续视图都将进入该内容视图

UIView1
|---UIScrollView
    |---UIContentView
        |---UIView2
        |---UIImageView
设置
UIScrollView
约束,与通常一样,但将内容视图设置为具有
UIScrollView
的前导、尾随、顶部和底部,同时还添加两个与
viewController相同宽度和高度的约束。视图
但具有优先级(因此,无论内容向哪个方向增加,该约束都将打破,并通过采用内容视图的推断高度来自动增加滚动视图的内容大小)。现在继续,像通常一样,在所有
子视图上添加约束。我假设:

  • 最上面的视图将有顶部、前导和尾随到其
    超级视图
    ,还有一个固定的高度
  • 您的底部视图将有其
    超级视图的前导、尾随和底部,并且还有一个固定的高度
  • 您的
    UIImageView
    将有一个前导、尾随和从上到上的视图以及从下到下的视图
  • 编辑: 以下是屏幕截图以防万一(在inspector中显示包含内容视图约束的视图层次结构)


    UIScrollView
    在添加约束时可能会比较棘手。您应该始终添加一个子视图
    ,该子视图将充当您的
    UIScrollView
    的内容视图,并且所有后续视图都将进入该内容视图

    UIView1
    |---UIScrollView
        |---UIContentView
            |---UIView2
            |---UIImageView
    
    设置
    UIScrollView
    约束,与通常一样,但将内容视图设置为具有
    UIScrollView
    的前导、尾随、顶部和底部,同时还添加两个与
    viewController相同宽度和高度的约束。视图
    但具有优先级(因此,无论内容向哪个方向增加,该约束都将打破,并通过采用内容视图的推断高度来自动增加滚动视图的内容大小)。现在继续,像通常一样,在所有
    子视图上添加约束。我假设:

  • 最上面的视图将有顶部、前导和尾随到其
    超级视图
    ,还有一个固定的高度
  • 您的底部视图将有其
    超级视图的前导、尾随和底部,并且还有一个固定的高度
  • 您的
    UIImageView
    将有一个前导、尾随和从上到上的视图以及从下到下的视图
  • 编辑: 以下是屏幕截图以防万一(在inspector中显示包含内容视图约束的视图层次结构)


    你是否考虑使用Table视图?你给UIIVIEVIEW提供高度限制吗?@ AdEL我想在这里使用ScLoVIEW。@ KKROCKS我想要图像视图中的动态高度,这意味着上下视图会粘在上下屏幕上,IVIEVIEW将占用所有其他的空间。你的视图控制器和ScLoView的场景和视图层次结构?你考虑使用Table视图吗?你给UIIVieview提供高度限制吗?@ AdEL我想在这里使用ScLoView。