我有一个应用程序,我需要将contentOffset
的{{1}}初始化为某个值。我注意到当我设置UIScrollView
时,它会将点向上舍入到最接近的整数。我尝试过同时使用contentOffset
和setContentOffset
并获得相同的结果。当我尝试手动将setContentOffset:animated
添加到帧原点时,我得不到我想要的结果。任何人都知道这个吗?
contentOffset
更新:更新了代码。
答案 0 :(得分:2)
这似乎不是我的错误,而是Apple无论是否故意的预期行为。为了解决这个问题,您需要在UIViewController的viewWillLayoutSubviews方法中设置contentOffset。显然,您需要在设置整个视图框后设置contentOffset。
答案 1 :(得分:1)
我对这个问题的解释也相当多,但事实证明你可以在滚动视图上设置边界,它可以做同样的事情并且实际上可以处理CGFloat值。
CGPoint newOffset = CGPointMake(3.8, 0);
我们在这里得到了新的补偿。
[scrollView setContentOffset:newOffset];
在此行之后,当前偏移量为(4,0)。
scrollView.bounds = CGRectMake(newOffset.x, newOffset.y, scrollView.bounds.size.width, scrollView.bounds.size.height);
这会给你(3.8,0)
答案 2 :(得分:0)
我认为这是因为如果contentOffset没有向上舍入,UIScrollView的任何子视图的内容都会变得模糊,尤其是文本。
答案 3 :(得分:0)
我已经为扩展程序添加了更高的精度:
// supposing you have to scroll manually in horizontal
self.myScrollview.setPreciseContentOffset(x:contentX, animated: true, completion: {[weak self] _ in
guard let `self` = self else { return }
// HERE the scroll is ended, pay attention the end scrolling delegates aren't be called because you set manually self.bounds so HERE implement your scrolling end code
})
<Route path="/recipes" component={Recipes} />