【问题标题】:UIView is being moved when changing height constraint on iphone 6/6 plus更改 iphone 6/6 plus 上的高度约束时正在移动 UIView
【发布时间】:2015-08-05 21:26:25
【问题描述】:

我在UIView 里面有一个UILabel 在一个UIscroll 里面。 UILabel 中的文字可以改变,所以我用这个方法来改变它的高度约束

func recalculateHeight(){
    l_info.sizeToFit();
    lc_heightInfo.constant = l_info.frame.height;
}

我在调用self.view.setNeedsLayout();self.view.layoutIfNeeded(); 之后在viewDidLoad() 中调用此方法以根据用户的iPhone 获得正确的宽度。

在 iPhone 4s/5/5s 上一切正常,但在 iPhone 6/6 plus 上尝试时,视图被移动了。

这是它在 iPhone 5s 上的外观: http://i.imgur.com/sGYzW3l.png

这就是它在 iPhone 6/6 plus 上的外观: http://i.imgur.com/qeCL22w.png

我已经搜索了一段时间,但没有找到类似的东西。

编辑:

约束如下:

  1. UIScrollView 的顶部和UIImageView 的顶部之间。 值 = 0
  2. UIImageView 的高度。 值 = 128
  3. UIImageView 的底部和包含UILabel 的顶部UIView 之间。 值 = 7
  4. 在顶部UIView 和顶部UILabel 之间。 值 = 17
  5. UILabel 的高度。 这是我要改变的约束
  6. UILabel 的底部和UIView 的底部之间。 值 = 17
  7. UIView 的底部和UIScrollView 的底部之间。 值 = 7

编辑 2:

我检查了UIImageView 底部和UIView(编号 3)之间的约束,调试器说它设置为 7。我尝试从代码中设置它,但没有任何反应。

我还进入了视图调试器,它看起来很完美。

有什么想法吗? 谢谢!

【问题讨论】:

    标签: ios swift autolayout iphone-6 iphone-6-plus


    【解决方案1】:

    您的l_info.frame.height 可能在不同设备上保持不变,但标题 imageView 的高度会发生变化。

    检查您如何设置lc_heightInfo 约束。它应该设置在(标签)容器视图和顶部的 imageView 之间。这样,您的容器视图将始终与顶部的 imageView 保持相同的距离。

    或者,如果该 ImageView 不是滚动视图的一部分,那么您应该在容器视图和滚动视图的顶部之间设置一个约束,并为滚动视图的顶部和标题 ImageView 设置一个约束。希望这会有所帮助:)

    【讨论】:

    • 图像视图是滚动视图的一部分。我将编辑帖子并放置设置的约束。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 2015-02-24
    • 1970-01-01
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    相关资源
    最近更新 更多