2011-12-25 138 views
1

假設我有一個UIView,它的標準配置跨越了容器的全部寬度和高度。爲了這個問題的目的,我們假設它的尺寸是320x400。假設這個視圖包含的內容可能(通常是)大於其標準尺寸(因此它滾動瀏覽內容)。旋轉UIView;如何在旋轉過程中防止裁剪?

現在,如果這個UIView具有與之相關聯的UIRotationGestureRecognizer,用於使用其transform屬性來旋轉視圖,我如何確保其幀大小/繪製區域一直是其目前的定位足夠大(由「足夠大「我的意思是渲染的內容應該始終延伸到原始邊界,並且在到達原始邊界的邊緣之前不會被剪切)?例如,如果我將它旋轉90度,視圖需要了解它的「寬度」現在可能消耗多達400個像素,而其高度限制爲320個像素。

請注意,我不想將視圖縮放爲旋轉操作的一部分。任何由於當前旋轉而變得可用的「額外」空間應當用於顯示附加內容(如果可用),而不是僅以較高縮放級別顯示相同內容。

回答

1

旋轉時,您不希望出現任何空白空間。解決方案是讓子視圖包含足夠大的背景以在旋轉期間覆蓋整個視口。我會說一個400 400的觀點應該做的。這個視圖可以是你的contentview的父視圖,但是這會給你帶來一點定位的麻煩。

更容易的是在你的當前視圖中添加一個子視圖。把(大)背景放在這個子視圖上,確保這個視圖位於視圖堆棧的底部,並且在你的當前視圖中放入clipsToBounds = NO。

請注意,禁用剪切可能會對性能產生影響,尤其是如果視圖層次結構變得複雜。