2011-01-11 103 views
3

我開發了一個iPad應用程序,其中我有一個滾動視圖,其大小根據我顯示的對象數量動態確定。現在,儘管我沒有設置任何內容偏移量,但我發現每當視圖加載時,滾動視圖已被偏移了一定量。當我檢查偏移量的值,它顯示0.我不明白爲什麼沒有contentOffset值,滾動視圖的行爲方式。這有什麼理由?UIScrollView內容偏移量的問題

我懷疑這與iOS 4.2有關,因爲我不記得當我在iOS 3.2上測試應用程序時發生此問題。

更新:其獲得的偏移量似乎根據scrollView的contentSize而有所不同。如果scrollView的contentSize匹配框架高度(它是一個垂直滾動視圖)的contentSize,那麼沒有偏移量。隨着contentSize增加到scrollView框架高度的值以上,偏移量也會成比例地增加。然而,scrollView.contentOffset.y仍然爲0.0

+0

我有一個非常類似的問題。 3.2上正常工作,4.2.1破壞 – Guillaume

回答

0

指定frame.origin價值和frame.height值最後一個元素來scrollView.contentOffset.y

+0

這將滾動到滾動視圖的最後一個元素。有時候是這樣的。我想調整滾動視圖以顯示視圖的第一個元素。這沒有發生。 – Nathan

1

的總和如果u使用Interface Builder -

  • 滾動視圖添加到視圖
  • 創建另一個視圖並添加您需要添加到滾動視圖的元素

然後添加這第二視圖滾動型

寫入該代碼在viewDidLoad中 scrollview.contentsize.y = lastelement.frame.origin.y + lastelement.frame.size.height + 10

這將調整滾動視圖內容大小。它顯示第一個元素並可以從頂部滾動到底部。

+0

儘管它將其調整爲contentSize,但同樣的問題仍然存在。 – Nathan

+0

我有不同的按鈕,它們在滾動視圖中顯示不同的對象。當我點擊每個按鈕時,我發現contentOffset會繼續增加,從0開始到74到244等。但是,這些值沒有設置模式。讓我覺得如果有些內存問題和一些對象沒有被解除分配。 – Nathan

1

UIScrollView在iOS 4.2.1上的表現與iOS 3完全不同。 我還不知道這是一個錯誤,還是我錯過了關於進化的文檔中的某些內容。

我的scrollview是在xib中創建的,我重複使用它來顯示同一個類的不同對象。在我的代碼中,我只修改了這個scrollview的contentSize。

使用NSLog查看時,偏移量保持爲0,但在屏幕上變化。

爲了解決我的問題,我最終每次在顯示新對象時都以編程方式創建新的滾動視圖。在你的情況可能不可能,但對我來說,問題 解決了 解決。

0

我面臨同樣的問題。在viewWillAppear:animated

-(void) viewWillAppear:(BOOL)animated 
{ 
    scrollView.frame = self.view.frame; 
    scrollView.contentSize = self.view.frame.size; 
} 
0

保持代碼設置滾動視圖解決了如果使用自動佈局,並要設置滾動瀏覽內容的偏移量,這是對我工作:

- (void)viewDidLayoutSubviews { 
    [super viewDidLayoutSubviews]; 
    self.myScrollView.contentOffset = CGPointMake(500, 0); 
} 
0

而且在斯威夫特

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    scrollView.contentOffset = CGPointZero 
}