我有一個UIScrollView
,有viewForZoomingInScrollView
返回視圖的幾個級別的子視圖。在縮放過程中,我希望其中一些子視圖可以調整大小,其他則不能調整大小。無論我嘗試什麼,所有子視圖都會調整大小。在我不想調整的子視圖的超級視圖中,我設置了autoResizesSubviews = NO,並嘗試了contentMode = UIViewContentModeCenter
。我也嘗試設置autoresizingMask
所有涉及UIViewAutoresizingNone
的意見。有什麼想法嗎?我無法重構子視圖的層次結構。保留調整UIScrollView的子視圖?
3
A
回答
13
UIScrollView的縮放視圖的子視圖是通過改變它們的變換而不是通過改變它們的邊界等來「調整大小」。對於你的問題的一個簡單的解決方案是捕捉在縮放視圖上設置的變換,將其反轉並應用它到子視圖,取消滾動視圖應用的縮放轉換。
在由viewForZoomingInScrollView
返回的視圖,覆蓋-setTransform:和問題通過所有的子視圖和應用倒置變換:
- (void)setTransform:(CGAffineTransform)transform
{
[super setTransform:transform];
CGAffineTransform invertedTransform = CGAffineTransformInvert(transform);
for (UIView *view in subviewsNotToBeResized)
{
[view setTransform:invertedTransform];
}
}
0
UIScrollView
變焦與改造完成,這會忽略你的內容模式和自動調整大小掩碼。一種可能的解決方案是將不想調整大小的內容放入滾動視圖的同級視圖中,而不是子視圖。另一種方法是嘗試用UIView
動畫實時反轉變換(請參閱Andrew Madsen的答案)。
相關問題
- 1. 將uiscrollview子視圖調整爲全屏
- 2. 調整視圖內的UIScrollView
- 3. UIScrollView子視圖調整爲超視圖框架
- 4. UIScrollView - 僅調整一些子視圖的大小?
- 5. 用UIScrollView子視圖調整UIView的尺寸
- 6. 如何使子視圖調整爲UIScrollView ContentSize?
- 7. 保存UIScrollView的視圖
- 8. 保留視圖
- 9. 保留MPMoviePlayerController.view子視圖的方法?
- 10. 的UITextView不保留子視圖可見
- 11. UIScrollView子視圖在縮放時不保留正確的邊界尺寸
- 12. UIScrollView的幻象子視圖
- 13. UIScrollView /子視圖的代表
- 14. 如何在UITableViewCell上保留子視圖
- 15. UIScrollView子視圖和setNeedsDisplay
- 16. UIScrollView與子視圖縮放
- 17. uiscrollview子視圖不滾動
- 18. UIScrollView子視圖縮放
- 19. UIScrollView觸及vs子視圖
- 20. 子視圖中的UIScrollView並根據內容的大小不能調整
- 21. 自動調整子類UITableViewCell子視圖
- 22. 的UIScrollView不切換圖像子視圖
- 23. 在調整scrollView的框架大小時調整UIScrollView子視圖的大小不正確
- 24. 用嵌入式視圖控制器調整UIScrollView的contentSize
- 25. 無法調整子視圖中的UITableViewCell
- 26. 調整UITabBarController子視圖的大小
- 27. UIView調整子視圖的大小
- 28. 的UIScrollView沒有放大,但子視圖保持不變
- 29. 在縮放時保持恆定的線寬UIScrollView子視圖
- 30. 調整大小UIScrollView
太棒了!它完美的作品。謝謝安德魯! –
很高興聽到它。不要忘記通過單擊左側的複選標記來接受問題的最佳答案。此外,通過點擊旁邊的向上箭頭,獲得您認爲有用的答案。 –
我點擊了選中標記,但因爲我沒有足夠的信譽積分,所以無法贊成。 –