UIScrollView - 分页UIImage大于屏幕宽度

时间:2011-06-20 16:14:22

标签: ipad uiscrollview paging

我目前正在开发一款使用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个图像开始,以及将来更多。希望开始时不会出现内存问题?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

页面大小是UIScrollView大小。使UIScrollView本身大于iPad屏幕的宽度是完全可以接受的。如果你将UIScrollView 1536px宽,那么每页的宽度将是1536px。

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

(但是,您需要重新考虑您的体系结构,因为您预先绘制了1536px宽的多个图像的应用程序将无法运行(因为它将超出设备的可用内存).WWDC2010视频包括关于这个主题的优秀演讲,即如何设计一个分页滚动视图,让你可以从图像到图像进行分页。)

答案 1 :(得分:0)

我想你想在你的UIScroll视图上打开分页。这将使其“捕捉”到滚动视图的宽度。它的行为就像iPad / iPhone上的主屏幕一样。您可能需要使scrollView的框架比屏幕更宽,以使分页效果更正确。无论您的图像大小如何,都可能会遇到一些延迟。