2010-04-23 73 views
3

做一些iPhone開發,使應用程序工作得很好。不過,我有一個UIScrollView,它具有自動調整內容和contentSize的功能,除非當我旋轉到橫向視圖時,它總是在滾動高度上有100多個像素。我不希望用戶能夠滾動到目前爲止的內容。iPhone UIScrollView ContentSize在旋轉/轉換爲風景時有額外的高度

是否有其他人有此問題或知道修復?

在此先感謝,

邁克爾

+0

是對contentInset屬性設置爲零? – 2010-04-23 01:10:25

+0

是插入是在0 - 我要通過它,並確保我有計算高度的功能是正確的 - 它是我能想到的唯一的東西:P – 2010-04-23 04:51:11

回答

4

我經歷了同樣的問題。在我的情況下,我正在循環查看UIScrollView,試圖動態計算它的contentSize。在遍歷子視圖的同時,我在子視圖中找到了兩個神祕的圖像視圖(不是由我添加的),它們一起加起來精確到100像素。事實證明,這兩個圖像實際上是自動添加到滾動視圖的滾動指示器。

我的解決方案是創建一個容器視圖類,我們稱之爲ContainerView,並在其中創建了滾動視圖。

這裏面ContainerView我覆蓋的方法addSubview和willRemoveSubview,像這樣:

- (void)addSubview:(UIView *)view { 
    [_addedSubviews addObject:view]; 
    [_scrollView addSubview:view]; 
} 

- (void)willRemoveSubview:(UIView *)subview { 
    [_addedSubviews removeObject:subview]; 
    [_scrollView willRemoveSubview:subview]; 
} 

現在你可以添加一個方法來計算大小。這次我們將遍歷名爲_addedSubviews的數組,而不是scrollviews子視圖,因爲我們知道_addedSubviews中的視圖只是我們添加的視圖。正因爲如此,我們將避免循環滾動指標和whatnot :-)

最後只是循環和計算。

- (CGSize)desiredContentSize { 
    for(UIView *mySubviews in _addedSubviews) { 
     // Calculate size 
    } 
    // Return size 
} 
+0

另一種方法是使用自定義類和測試來查看是否他們是你想要的類型(isKindOfClass),但你的方法可能更快地處理 – 2012-04-18 23:16:57

0

Zath有一個有趣的解決方案。我遇到過類似的情況。

我想說,切換到橫向模式後,您並未更新contentSize,但contentSize應該是相同的,無論如何。諷刺的是,我剛纔遇到了相反的問題。但是,在學習超級視圖之後,必須將autoresizesSubviews設置爲yes,並確保所有4個超級視圖具有相同的resizing屬性,並最終保留「緩衝區」空間。

很多的調整後運行,最終你會得到你想要的東西,除非你想頂部Ÿ點停留在同一地點時,它大於0