簡體   English   中英

在iPhone 6/6 plus上更改高度限制時,將移動UIView

[英]UIView is being moved when changing height constraint on iphone 6/6 plus

我在UIscroll UIView里面有一個UILabel UILabel的文本可以更改,因此我使用此方法來更改其高度約束

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

我在調用self.view.setNeedsLayout();之后在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的底部和包含UILabel的頂部UIView 價值= 7
  4. 在頂部的UIView和頂部的UILabel 價值= 17
  5. UILabel高度。 這是我正在改變的約束
  6. UILabel的底部和UIView的底部之間。 價值= 17
  7. UIView的底部和UIScrollView的底部之間。 價值= 7

編輯2:

我檢查了UIImageViewUIView底部之間的約束(編號3),調試器說將其設置為7。我嘗試通過代碼進行設置,但沒有任何反應。

我還進入了視圖調試器,它看起來很完美。

有任何想法嗎? 謝謝!

您的l_info.frame.height可能在各個設備上保持不變,但標頭l_info.frame.height的高度會發生變化。

檢查如何設置lc_heightInfo約束。 它應該設置在(標簽)容器視圖和頂部的imageView之間。 這樣,您的容器視圖將始終與頂部的imageView保持相同的距離。

或者,如果ImageView不是滾動視圖的一部分,則應在容器視圖和滾動視圖的頂部之間設置一個約束,並在scrollView和標題ImageView的頂部之間設置一個約束。 希望這可以幫助 :)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM