2009-12-31 44 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:来返回原来的位置。希望这可以帮助。

相关问题