在我的应用中,我有一些逻辑可以动态更改UIScrollView
的{{1}}。我遇到的问题是,当我更改contentSize时,它会将contentSize
设置为contentOffset
或类似的内容。
我猜您无法将CGPointZero
设置为contentSize
的中间位置。关于如何使其发挥作用的任何想法?
换句话说,我想更改UIScrollView
中途的contentSize
并保留其UIScrollView
。
提前感谢,
FBR
答案 0 :(得分:1)
在我的应用程序中,我有一个UIViewController
作为其根子视图的UIScrollView
。该scrollView包含一个UIView
,该容器充当我已嵌入的UITextView
的容器。
输入足够长的字符串将导致textView展开,随后更改scrollView的contentSize
导致其将其内容偏移量重置为0。看着堆栈跟踪,我能够看到{{1} }尝试在contentSize更改后立即调整内容偏移。
我创建了_adjustContentOffsetIfNecessary
的子类,该子类阻止UIScrollView
最初尝试调整偏移量。
_adjustContentOffsetIfNecessary
当contentSizes相同时,我们会正常调整偏移量。如果不同,我们将偏移保持不变,并将oldContentSize更新为新大小,以便下次可以接受更改偏移。
答案 1 :(得分:0)
正如您已经看到的那样,您无法通过更改contentSize
来执行此操作,但您可以通过更改contentOffset
并移动子视图来伪造它。 Daniel Tull DTKit library DTInfiniteGridView
课程中的一个例子。
答案 2 :(得分:0)
setContentSize:
将设置其contentOffset(_adjustContentOffsetIfNecessary
,调用内部方法,在您的滚动视图上进行神秘的偏移更改。)
设置所需内容偏移量的一种方法是在滚动视图上执行setContentOffset:reqiredOffset animation:NO
(为new contentSize计算requiredOffset。)
答案 3 :(得分:0)
我认为你可以通过保存当前的contentOffset
来解决这个问题,然后在设置新的contentSize
之后,你可以使用setContentOffset:animated:
返回滚动的位置。希望这会有所帮助。
答案 4 :(得分:-2)
我不知道将使用哪种方法,
- (void)viewDidLoad {
[super viewDidLoad];
srcv.contentSize = ?;
}
这将会发生什么,取而代之的是“?”滚动模拟器