【问题标题】:UIScrollView - paging UIImage larger than the screens widthUIScrollView - 分页 UIImage 大于屏幕宽度
【发布时间】:2011-06-20 16:14:21
【问题描述】:

我目前正在开发一个使用 UIScrollView 的 iPad 应用程序。 UIScrollView 填充了 UIImage(s) 并且所有图像都大于 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 张图片开始,未来还会有更多。希望一开始不会出现内存问题?

感谢您的帮助。

【问题讨论】:

    标签: ipad uiscrollview paging


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我尝试让滚动视图变大,但它总是捕捉到原始屏幕尺寸 768 的宽度。我已经用我当前的代码修改了我的原始帖子,这不起作用它只是滚动当前的 iPad 宽度而不是图像宽度。
      • 您可能需要为滚动后移动的图像设置动画。或者可能是动画而不是滚动。
      猜你喜欢
      • 2018-05-30
      • 2015-02-22
      • 2021-05-26
      • 2018-12-04
      • 1970-01-01
      • 2016-09-02
      • 2012-08-14
      • 2011-07-02
      • 1970-01-01
      相关资源
      最近更新 更多