2009-12-31 25 views
1

在我的應用中,我有一些邏輯動態地改變0​​的contentSize。我遇到的問題是,當我更改contentSize時,它將contentOffset設置爲CGPointZero或類似的東西。將一個新的contentSize設置爲一個UIScrollView會導致它滾動回到點x:0 y:0

我想你不能將contentSize設置在UIScrollView的中間。任何想法如何讓這個工作?

換句話說,我想將我的UIScrollViewcontentSize更改爲中途並保留其contentOffset

在此先感謝,

FBR

回答

0

正如你已經看到的,你不能改變contentSize做到這一點,但你可以僞造它通過改變contentOffset,並四處移動你的子視圖。 Daniel Tull的DTKit libraryDTInfiniteGridView類中的一個例子。

+0

我對這個圖書館不熟悉。你能告訴我他在代碼中用contentOffset僞​​裝contentSize的代碼在哪裏? 這就是我想要做的。我正在開發一個數據表,您可以像Excel電子表格一樣在列和行中查看數據。我想動態設置contentSize的原因是限制用戶只能進行垂直滾動和水平滾動。所以如果我在UIScrollView中檢測到一個垂直滾動條,我設置contentSize,其中的寬度等於UIScrollView的框架的寬度,我保持高度。 – ForeignerBR 2010-01-04 16:56:50

+3

爲什麼不能使用UIScrollView的directionalLockEnabled? – 2010-01-16 20:27:54

-2

我不知道這是會使用的方法,

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    srcv.contentSize = ?; 
} 

這裏會發生什麼,並替換爲「?」滾動模擬器

0

的UIScrollView的setContentSize:將設置其contentOffset(_adjustContentOffsetIfNecessary,內部方法被調用,它確實對你的滾動視圖神祕的偏移變化。)

一種方法來設置所需的內容偏移是做滾動視圖上的setContentOffset:reqiredOffset animation:NO
(requiredOffset計算新的contentSize)。

0

我認爲你可以通過保存當前的contentOffset來欺騙它,並且在設置新的contentSize之後,你可以使用setContentOffset:animated:來返回原來的位置。希望這可以幫助。

相關問題