UIScrollView ContentOffset 未到达屏幕边缘



我在UIScrollView上遇到了问题,不确定这是否是一个错误,但是当我实现具有delegate和可缩放/可平移图像的UIScrollView时,就会发生这种情况。

首先,当我平移图像时,contentOffset可能是非整数值 (.5)。对于某些zoomScales,当我将图像一直平移到边缘时,它因此而比到达边缘少了半个像素。

这是一件非常小的事情,但是在我的应用程序中,我必须在屏幕上拖动对象,如果我将对象拖到角落,您可以注意到它。

我已经实现了以下内容来尝试纠正问题,并使contentOffset必须是一个完整的值:

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
    if (targetContentOffset->x != ceilf(targetContentOffset->x))
    {
        if (velocity.x > 0)
        {
            targetContentOffset->x = ceilf(targetContentOffset->x);
        }
        else 
        {
            targetContentOffset->x = floorf(targetContentOffset->x);
        }
    }
    if (targetContentOffset->y != ceilf(targetContentOffset->y))
    {
        if (velocity.y > 0)
        {
            targetContentOffset->y = ceilf(targetContentOffset->y);
        }
        else 
        {
            targetContentOffset->y = floorf(targetContentOffset->y);
        }
    }
}

但是,它似乎不起作用,因为我的targetContentOffsetcontentOffset属性完全不同。

有没有人 a) 为什么会发生此错误或 b) 如何使用上述委托方法或其他方式修复它?

或者,

此方法实现也可能适合您。

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

查看下面的评论,您可能需要实现多种方法。 上面的一个或另一个答案帖子中说明的当它减速到停止时,只是为了确保你触摸到你的边缘条件,以及你已经必须处理的速度点的方法。

最新更新