在iphone 6/6 plus上更改高度限制时,UIView正在被移动

时间:2015-08-05 21:26:26

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

UILabel内的UIViewUIscrollUILabel中的文本可以更改,因此我使用此方法更改它的高度约束

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

我在调用viewDidLoad()self.view.setNeedsLayout();之后在self.view.layoutIfNeeded();中调用此方法,以获得正确的宽度,具体取决于用户的iPhone。

iPhone 4s / 5 / 5s上的所有功能都很完美,但在iPhone 6/6上试用时,移动视图。

这就是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的底部和包含UIView的顶部UILabel之间。 值= 7
  4. 位于UIView的顶部UILabel和顶部之间。 值= 17
  5. UILabel的高度。 这是我正在改变的约束
  6. UILabel的底部和UIView的底部之间。 值= 17
  7. UIView的底部和UIScrollView的底部之间。 值= 7
  8. 编辑2:

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

    我也进入了视图debbuger,它看起来很完美。

    有什么想法吗? 谢谢!

1 个答案:

答案 0 :(得分:1)

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

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

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