我目前正在开发一个使用 UIScrollView 的 iPad 应用程序。 UIScrollView 填充了 UIImage,并且所有图像都比 iPad 宽度大,是宽度的两倍,即 1536 像素。我希望它做的是,当滑动/轻拂时,它将滚动到第二个图像,即 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 宽,那么每个页面将是 1536px 宽。
为了让用户滚动并看到每张图片,你想要的是一个包含一行滚动视图的滚动视图。外层滚动视图是窗口中的滚动视图,宽度为 1536px,仅用于分页。内部滚动视图是屏幕的宽度,它们的 contentSize 设置为图像大小,以便用户可以在每个滚动视图中滚动并看到图像。
(但是,您需要重新考虑您的架构,因为您预先绘制了多个 1536px 宽图像的应用程序将无法运行(因为它将超出设备的可用内存)。WWDC2010 视频中有一个精彩的演讲关于这个主题,即如何设计一个分页滚动视图,让您可以在图像之间进行分页。)
我认为您想在 UIScroll 视图上打开分页。 这将使其“捕捉”到滚动视图的宽度。 它的行为就像 iPad/iPhone 上的主屏幕一样。 您可能需要使滚动视图的框架比屏幕更宽才能获得正确的分页效果。 不管怎样,由于图像的大小,您可能会遇到一些延迟。