2017-09-15 65 views
1

我正在創建示例應用程序,其中我正在複製Facebook屏幕以練習自動佈局。 當我以縱向模式運行登錄屏幕時,它看起來很完美。在自動佈局中當方向更改爲橫向時隱藏視圖

問題儘快方向將更改爲橫向,因爲頭圖像的所有視圖崩潰,as shown here

我要的是,在橫向模式下,頭圖像消失,使其他的觀點得到它的空間。我不想使用scrollview。

我嘗試這樣做:

headerImageView.isHidden = true 

但結果出來是this 的ImageView的得到了消失卻沒有留下它的空間。 任何人都可以給我一個很好的解決方案嗎?

P.s 對不起,因爲我的聲望這樣的圖像。

+0

我想....如果你正在使用的限制.....而不是隱藏headerImageview headerImageView,集高度約束爲零,看看它是否工作。 – Amit

+0

它不工作。 – kinza

回答

0

如果您隱藏的圖像比它不會顯示給用戶但空間將被屏幕上的圖像使用。更好的方法是當方向更改爲橫向時,您可以設置圖像高度0。您可以創建圖像的高度出口約束,並根據方向進行更改。此方法在更改之前或之前調用。您需要創建圖像的高度限制。

@IBOutlet var heightConstraint : NSLayoutConstraint! 


     override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval) 
      { 
       if toInterfaceOrientation == .landscapeLeft || toInterfaceOrientation == .landscapeRight{ 
    // Imageview height constraint outlate 
        heightConstraint.constant = 0 
       } 
       else{ 
        heightConstraint.constant = 100 
       } 
      } 

See in image, i point out for How set Height Constraint in image

+0

仍然沒有效果。圖像仍然佔據相同的空間。 – kinza

+0

嘗試新的代碼,我更新了答案,它的工作。我檢查過它。 – Hiren

+0

imageview的初始高度應該是多少?在故事板? 我應該使用哪個約束高度? – kinza

4

當使用自動佈局,您可以利用大小級。到未安裝(橫向iPhone加) - (iPhone在景觀的wC HC)和WR HC https://github.com/jonaszmclaren/AutolayoutExample爲緊湊的寬度和高度

設置圖像視圖:

enter image description here

低於或例如這裏 見描述爲的wC HC和WR HC未啓用

文本字段和圖像視圖之間的約束:

enter image description here

終於爲的wC HC和你必須定義文本字段的頂部約束 - 我在視圖的頂部。

enter image description here

這種方式,波泰特圖像視圖會固定到圖像視圖中顯示和文本視圖,並在景觀圖像視圖將被隱藏,文本字段固定到視圖的頂部。

+0

,我沒有任何的wC HC選項。 :(我工作的Xcode 8 – kinza

+2

是的,你有選擇所需的約束,並在尺寸檢查旁邊的「安裝」有一個小「+」,在其中定義新的變化。 – jonaszmclaren

+0

https://imgur.com/A/X4NhA – jonaszmclaren

0

isHidden只會改變視圖的可見性。它不會將其從該位置移除。爲了解決這個問題,創建了一個標題視圖的高度約束插座,並在方向改變時將其改爲

例如:

headerViewHeightConstraint.constant = 0.0 
self.view.layoutIfNeeded() 

,並給它縱向模式設置高度再次恢復。

headerViewHeightConstraint.constant = // height value which you want to set 
self.view.layoutIfNeeded() 
0

最好的方法是在這種類型的場景中使用scrollView。如果您不想擁有scrollView,那麼您必須給出最後一個按鈕的底部約束,並將該特定約束的優先級設置爲低。它對當前屏幕(橫向和縱向)都可以正常工作,但是當你進入小屏幕即4或5時,自動佈局的目的將失敗。

like I did

0

另一種選擇可能是將堆棧視圖中您的視圖。然後隱藏headerImageView應該恢復未使用的空間。