iphone - UIScrollView ContentOffset 未到达屏幕边缘

标签 iphone ios cocoa-touch uiscrollview uiscrollviewdelegate

我在使用 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) 如何使用上述委托(delegate)方法或其他方式修复它?

最佳答案

或者,此方法实现也可能对您有用。

-(void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView

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

关于iphone - UIScrollView ContentOffset 未到达屏幕边缘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10857825/

相关文章:

ios - UIActionSheet(或 UIAlertView)的 tintColor(iOS 7+)

iPhone:获取附近的地点/地点列表

ios - applicationWillResignActive 也由 iOS 警报调用。如何避免这种情况?

ios - 将 navigationItem titleView 的位置更改为左侧

ios - ATS 将在 IOS 应用程序中强制执行。简单的饲料呢?

ios - 通过 Adob​​e 的 Typekit 在 iOS 中使用自定义字体

ios - 逐行绘制到位图上下文的有效方法

objective-c - 如何将 NSMutableArray 转换为 NSArray?

iphone - KVC : How do I save UIKit structs in plist?

iphone - 递归遍历未知结构的NSDictionary