2013-07-24 71 views
0

我有一個圖像作爲UIScrollView的子視圖。我希望圖像最初使用UIView的autoResizingMask和contentMode(UIViewContentModeAspectFit)屬性適合屏幕的邊界。當滾動視圖的框架被更改爲爲鍵盤騰出空間時,我不希望縮小子圖像視圖以適應較小的框架。創建滾動視圖時,我無法禁用autoResizeSubviews,因爲必須在開始時重新調整子視圖的大小。現在我可以在鍵盤出現時關閉子視圖重新調整大小,並在消失時重新啓用它。這似乎工作正常,但似乎hackish。這是一種可以接受的方式嗎?還是有更好的解決方案?謝謝。iOS UIScrollView大小的子視圖只有一次

回答

1

不要擔心autoResizingMask,因爲它是UIScrollView的子視圖。

UIView上的autoResizingMask允許視圖在其父視圖的框架已被調整大小時自動調整大小。在這種情況下,聽起來就像您的scrollView的框架被垂直調整以適應鍵盤的屏幕邊框。當父視圖的框架縮小時,您的UIImageView也會縮小,這意味着它在您使用UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleHeight作爲UIImageView的autoResizingMask。

而是在你的UIImageView使用autoResizingMask的,應手動設置它的框架是大小通過bounds屬性的UIScrollView的框架相同:

imageView.frame = scrollView.bounds; 

然後我們設置了滾動的contentSize是相同的大小作爲imageView。

scrollView.contentSize = imageView.frame.size; 

這樣,你的ImageView的應該是你的滾動視圖的全尺寸,如果你調整滾動視圖框的大小不會移動。

+0

好吧,真棒...有道理。我曾經認爲contentMode只是基於superview的幀大小而生效,但現在我看到文檔說它基於視圖本身的幀大小。謝謝! – user26691

相關問題