簡體   English   中英

iOS統一比例子視圖與superview

[英]iOS Uniform scale subviews with superview

我有一個應用程序,允許用戶以多個方向將視圖拖動到屏幕上。 所以,讓我說我是在縱向模式,我的超級視圖是768x1024。 讓我們說我將10​​個不同的項目拖到超級視圖上。 這些項目是縮放,旋轉等。然后我旋轉設備,我的超級視圖縮小到576x768。 如何讓我的所有子視圖保持其位置並相對於新的較小尺寸進行轉換? 所以從本質上講,我的超級視圖及其所有子視圖應該看起來與他們在肖像中所做的完全一樣,除了所有內容都按比例縮小。

而且,如果我在景觀和一切都“縮小”下來然后我拖動另一個視圖並縮小它以適應好。 當設備旋轉回肖像時,我需要新視圖在適當的位置和大小放大

這里最簡單的方法是使用視圖的transform屬性。 在這種情況下,您將阻止視圖在旋轉時自動調整大小,並使用類似視圖控制器的willAnimateRotationToInterfaceOrientation:duration:方法在willAnimateRotationToInterfaceOrientation:duration:上設置變換。 您可以使用CGAffineTransformMakeScale創建一個可以放大或縮小所有內容的轉換; 你可能想要一個用於風景,只需使用nil變換用於肖像(反之亦然)。

這會將新視圖拖動到您的超級視圖中變得復雜,因為它已被轉換,但是一旦您獲得了視圖,它們在調整大小時應該正常運行。 對於新視圖,您必須計算(可能使用convertRect:fromView:UIView的方法)一旦添加新的子視圖,rect將是什么。

您還可以直接覆蓋視圖的layoutSubviews() ,並根據視圖的尺寸分配子視圖的變換。 通過這種方式,您可以在不使用自動布局的情況下手動自定義子視圖的框架和/或變換,從而獲得在視圖和其他同級UI項目中使用自動布局的好處。

暫無
暫無

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

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