我使用UIView的子類來(以編程方式)包含和管理多個子視圖(主要是UIImageViews),這些子視圖彼此相鄰,因此沒有任何子視圖重疊。假設子視圖的高度都相同(最初繪製時)是安全的,但是寬度是變化的。容器可能會調整大小,在這種情況下,我希望子視圖按比例縮放。此外,有時我需要添加/刪除/編輯任何給定的子視圖(可能會改變其寬度)。向/從UIView中添加/刪除子視圖時平滑縮放
我取得了一些成功使用:
[self setAutoresizesSubviews:YES];
[self setAutoresizingMask:(UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleWidth |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleHeight |
UIViewAutoresizingFlexibleBottomMargin)];
有容器自動調整其子視圖時,其框架的變化。
不幸的是,當子視圖的內容發生變化導致它擴大或縮小時,我遇到了很多麻煩。簡單地設置'setNeedsLayout'併爲子視圖定義'layoutSubviews'似乎並沒有做到這一點,因爲在'layoutSubviews'開始時,子視圖的框架沒有被調整。如果我強迫它,那麼當前的內容被拉伸或收縮,這看起來很可怕。
如果有人能解釋如何在這種情況下使用sizeToFit,layoutSubviews,sizeThatFits:,setAutoresizesSubviews:,setAutoresizingMask :,和setContentMode:我肯定會很感激。我的意思是,如果我想調整一個子視圖的內容(並擴大它),然後我怎麼做這樣的:
- 子視圖加寬(無不利拉伸或在其內部還有自動調整的任何東西)
- 容器變寬成比例的量
- 沒有其他子視圖的受影響
?
在此先感謝!