【问题标题】:UIScrollView, Autolayout and subviewsUIScrollView、自动布局和子视图
【发布时间】:2015-11-30 01:51:07
【问题描述】:

我遇到了自动布局的问题,似乎无法找到应该很容易实现的答案。

我有以下视图层次结构:

-UIScrollview
  -UIView
     - UILabel
     - UILabel
     - UILabel

标签上的前导/尾随约束使它们在更薄的设备(iPhone 4s 与 iPhone 6)上更高。

为了让 UIScrollview 正常工作,我需要在 UIScrollView 内部设置 UIView 的高度约束,以避免“模糊高度”警告。

但在 iPhone 4s 上运行时,UIView 不够高,无法容纳其子视图。

到目前为止,我唯一的解决方案是在 UIView 上创建对高度约束的引用,并在视图出现时更新高度约束:

-(void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
    self.contentHeight.constant =self.lastLabel.frame.origin.y+ self.lastLabel.frame.size.height;
    [self.view layoutIfNeeded];
}

我认为必须有更好的方法来做如此简单的事情。

我附上了一张图片来详细说明问题。

感谢您的宝贵时间。

根据下面的@Katty,使宽度/高度等于滚动视图的超级视图会导致更大的问题:

【问题讨论】:

    标签: ios objective-c iphone uiscrollview autolayout


    【解决方案1】:

    您使用的视图层次结构是正确的。基本上您需要做的是在您的子视图(位于 Scrollview 内)中,您需要对齐自动布局 w.r.t。滚动视图的顶部、底部、前导和尾随,并且需要为您的子视图提供 Equal Height,这基本上计算了滚动视图的内容大小。

    【讨论】:

    • 什么应该是等高? UIView » UIScrollView?这可以防止滚动,对吧?
    • scrollview 的约束应该对齐 top、leading、trailing 和 bottom wrt superview 并且子视图的约束应该对齐 top、leading、trailing 和 bottom wrt wrt 滚动视图并且需要给出等于 childview 的高度.(例如,如果它的 1200px,它应该是固定的)
    • 这就是我现在正在做的事情。 UIView isleading:0, trailing:0, top:0, bottom:0, equalWidth to ScrollView, height:540 (fixed)
    • scrollview 的高度是多少?
    • 滚动视图的高度为 800 (Layout class w:compact h:regular)
    【解决方案2】:

    相对于 UIScrollView 和 Height 设置尾随前导顶部底部,并使用与主视图的 Proposition ratio 的 Set 固定

    首先设置相等的高度和宽度,然后设置命题乘数。 跳该图像可以帮助您理解我要向您解释的内容。

    【讨论】:

    • 这似乎使问题变得更糟,请参阅添加到我原帖中的屏幕截图。
    【解决方案3】:

    在与另一位开发人员审查后,我发现了这个问题。容器中的底部子视图需要底部约束。这解决了这个问题。

    感谢所有花时间帮助解决问题的人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-25
      • 1970-01-01
      相关资源
      最近更新 更多