2017-04-24 20 views
0

嗨同行的軟件工程師,我需要很大的幫助:) 在此先感謝您的幫助!自動調整大小+變換旋轉==>使它工作的最優雅的解決方案是什麼?

這裏是我的問題:這是包含在視圖A

VIEW B已經與所有選項([.flexibleWidth, .flexibleHeight, .flexibleLeftMargin, .flexibleRightMargin, .flexibleTopMargin, .flexibleBottomMargin])自動調整大小,因爲我想視圖B與視圖A調整

VIEW B如果VIEW A的高度變化。

enter image description here enter image description here

到現在爲止它的工作原理...查看B方向移動,並正確地調整大小,但是當我有應用在視圖B變換旋轉,我嘗試VIEW A.相同的高度變化

這裏是發生了什麼:

enter image description here enter image description here

我已經建議手動設置VIEW A中每個視圖的框架,當我改變其大小。但我覺得它非常「Mc Gyverish」,考慮到VIEW A可以包含很多視圖,如VIEW B

+1

請不要在標題中使用大寫字母。 –

回答

0

它是autoresizingMask的預期行爲。使用Autolayout解決此問題。在你描述的常見情況下,這是更常見的方式。

另外AutolayoutautoresizingMask不相同。

約束:

enter image description here

+0

感謝您的回答。 通過像使用約束一樣設置寬度和高度,視圖不會使用父視圖更改其高度。 –

0

使用自動佈局和調整大小完全。 以下是您可以嘗試的方法。

步驟1: 做自動佈局。 (取決於你的紅view.Mine的現在的位置是正確的,頂部約束)

第2步: 做自動尺寸。

右鍵單擊紅色視圖並將光標拖放到主視圖並選擇相等寬度和相等高度。 enter image description here

並從屬性檢查員通過放大倍數改變大小。 enter image description here

我已經改變了我的redView的寬度與長寬比值0.6。

使用此技術和redView將很容易根據設備大小進行調整。

只是爲了另外,如果你想使用約束變化 動畫始終使用

[self.view layoutIfNeeded]; 

就這樣

-(void)rotate { 
    [self.view layoutIfNeeded]; 
    [UIView animateWithDuration:0.3 animations:^{ 
     self.redView.transform = CGAffineTransformMakeRotation(M_PI_2); 
     [self.view layoutIfNeeded]; 

    }]; 
    self.redView.transform = CGAffineTransformIdentity; 
} 

有一些有用的堆棧回答爲什麼我們需要this.May是你可以谷歌,如果你想知道原因。 :)

相關問題