UIScrollView 的大小和图像的大小

Size of UIScrollView and Size of Images

我创建了这个动态加载图像的滚动视图。但是我无法让图像一张一张地覆盖屏幕(应该适应 iPhone/iPad)。并且图像的高度也已损坏(见附图)

我做错了什么?

图片

加载图片的来源:

 for (int i=0; i < numberOfImages; i++) {

        // create image
        NSString *imageName = [NSString stringWithFormat: imageArray[i], i+1];
        UIImage *image = [UIImage imageNamed:imageName];
        UIImageView *imageView = [[UIImageView alloc] initWithImage:image];

        // put image on correct position
        CGRect rect = imageView.frame;
        rect.origin.x = currentX + self.scrollView.frame.size.width/2;
        imageView.frame = rect;

        // update currentX
        currentX += imageView.frame.size.width + self.scrollView.frame.size.width;

        [self.scrollView addSubview:imageView];
        [imageView release];
    }

    self.scrollView.contentSize = CGSizeMake(currentX, self.view.frame.size.height);

    self.scrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;
    [self.view addSubview:scrollView];
    [self.scrollView release];

这应该适合你:

for (int i = 0; i < numberOfImages; i++) {

    // create image
    NSString *imageName = [NSString stringWithFormat: imageArray[i], i+1];
    UIImage *image = [UIImage imageNamed:imageName];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.contentMode = UIViewContentModeCenter;

    // put image on correct position
    CGRect rect = self.scrollView.bounds;
    rect.origin.x = currentX;
    imageView.frame = rect;

    // update currentX
    currentX += self.scrollView.frame.size.width;

    [self.scrollView addSubview:imageView];
    [imageView release];
}

self.scrollView.contentSize = CGSizeMake(currentX, self.scrollView.frame.size.height);

您还可以将 scrollView 分页 属性 设置为是,这样它会逐页滚动。

您应该使用具有水平滚动功能的 UICollectionView 而不是 scrollView,并且您可以从集合视图中实现委托以提供具有所需尺寸的单元格。实施起来会非常简单明了。