UIScrollView-分页UIImage大于屏幕宽度



我目前正在开发一款使用UIScrollView的iPad应用程序。UIScrollView中填充了UIImage,所有图像都大于iPad的宽度,是宽度1536px的两倍。我想让它做的是,当滑动/轻弹时,它会滚动到第二个图像,即1536,第三个图像滚动到3072,依此类推。这只是为了在滑动时看到一个快速图像。我看过scrollViewDidEndDragging,但它有时会变得非常讨厌和紧张。

有没有办法将动画设置为每次从UIScrollView中的最后一个UIImage滚动1536?我知道你可以使用setContentOffset,但如果我在上面的方法中使用它,它就不起作用了,因为它仍然使用当前的转换,因此使它非常跳跃。

编辑

for (i = 1; i <= kNumImages; i++) 
{
    NSString *imageName = [NSString stringWithFormat:@"cocktail_%d.png", i];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    CGRect rect = imageView.frame;
    rect.size.width = kMainImageWidth;
    rect.size.height = kMainImageHeight;
    rect.origin = CGPointMake(xpos, 0);
    imageView.frame = rect;
    [mainImgScrollView addSubview:imageView];
    [imageView release];
    xpos += kMainImageWidth;
 }

编辑

我所需要做的就是把UIScrollView做成1536px宽,而且效果很好。该应用程序将有6张图片可供开始使用,未来还会有更多图片。希望一开始不会有内存问题?

谢谢你的帮助。

页面大小为UIScrollView大小。让UIScrollView本身大于iPad屏幕的宽度是完全可以接受的。如果您将UIScrollView设置为1536px宽,则每页的宽度将为1536xx。

为了允许用户滚动并查看每张图片,您需要的是一个包含一行滚动视图的滚动视图。外部滚动视图是窗口中的滚动视图,宽度为1536px,仅用于分页。内部滚动视图是屏幕的宽度,它们的contentSize设置为图像大小,这样用户就可以在每个滚动视图中滚动并查看图像。

(然而,你会想重新思考你的架构,因为你预先绘制了1536px宽的多个图像的应用程序将无法运行(因为它将超过设备的可用内存)。WWDC2010视频包含了一个关于这个主题的精彩演讲,即如何设计一个页面滚动视图,让您可以在图像之间进行页面切换。)

我想您应该打开UIScroll视图的分页功能。这将使其"捕捉"到滚动视图的宽度。它的行为就像iPad/iPhone上的主屏幕一样。您可能需要使滚动视图的边框比屏幕更宽,以获得正确的页面效果。不管怎样,由于图像的大小,您都可能会遇到一些滞后。

最新更新