setContentOffset失去精度?

时间:2012-05-04 15:02:35

标签: iphone objective-c ios cocoa-touch uiscrollview

我有一个应用程序,我需要将contentOffset的{​​{1}}初始化为某个值。我注意到当我设置UIScrollView时,它会将点向上舍入到最接近的整数。我尝试过同时使用contentOffsetsetContentOffset并获得相同的结果。当我尝试手动将setContentOffset:animated添加到帧原点时,我得不到我想要的结果。任何人都知道这个吗?

contentOffset

更新:更新了代码。

4 个答案:

答案 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)

斯威夫特4:

我已经为扩展程序添加了更高的精度:

// 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} />