iPhone UIImageView 在 UIScrollView 中水平滚动 - 中心图像?

Posted

技术标签:

【中文标题】iPhone UIImageView 在 UIScrollView 中水平滚动 - 中心图像?【英文标题】:iPhone UIImageView horizontall scrolling in UIScrollView - Center image? 【发布时间】:2012-01-25 14:37:26 【问题描述】:

我有根据屏幕大小下载和调整图像大小以适应图像全屏的方法。最大图像尺寸为 (320x416)。现在,我有全屏 UIScrollView,我正在创建 UIImageView,其中 initWithFrame 在 X 上按屏幕宽度移动,水平添加 UIScrollView 空间。 只要我设置在 UIScrollView [imgView setContentMode:UIViewContentModeLeft] 中创建的 UIImageView 就没有问题。使用 [imgView setContentMode:UIViewContentModeCenter] 它会移动图像,每次循环计数,向右添加半屏,所以我只能看到第一张图像,只有当我稍微落后于 scrollView 边界时才能看到第二张和第三张。

这是我的代码,有人能踢我一下我在哪里遗漏了什么吗?谢谢你。 我将 NSLog 放在 imgView initWithFrame:CGRectMake 下,但坐标没问题,X 位置移动了 320 像素,然后在 scrollView 中排列 imgView 就可以了。

- (void)setImages 

    int screenWidth = self.view.frame.size.width;
    int screenHeight = self.view.frame.size.height;

    // I know count of images here => imageIndex
    [mainView setContentSize:CGSizeMake(screenWidth * imageIndex, screenHeight)];

    int actualWidth = screenWidth;

    for (int index = 0; index < imageIndex; index++) 

        UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(actualWidth - screenWidth, 0, actualWidth, screenHeight)];

        ImageProcessing *impc = [[ImageProcessing alloc] init];
        UIImage *image = [UIImage imageWithData:[imagesNSDataArray objectAtIndex:index]];
        UIImage *resampled =  [impc processImageToWidthAndHeight:image :screenWidth :screenHeight];

        // [imgView setContentMode:UIViewContentModeCenter];
        [imgView setContentMode:UIViewContentModeLeft];
        imgView.image = resampled;

        [mainView addSubview:imgView];

        actualWidth = actualWidth + screenWidth;
    

【问题讨论】:

【参考方案1】:

您正在混合视图宽度和水平位置。视图没有相同的宽度 - 您正在使它们越来越宽。当您尝试使图像在视图中居中时,它会发生偏移,因为视图比您想象的要宽。


int viewX = 0;

for (int index = 0; index < imageCount; index++) 
    CGRect frame = CGRectMake(viewX, 0, screenWidth, screenHeight);
    UIImageView *imgView = [[UIImageView alloc] initWithFrame:frame];

    [...]

    viewX += screenWidth;

【讨论】:

以上是关于iPhone UIImageView 在 UIScrollView 中水平滚动 - 中心图像?的主要内容,如果未能解决你的问题,请参考以下文章

使用动画 UIImageView 作为 iPhone 相机覆盖

UIImageview 上的渐变层在 iphone 6s 中向上移动,同时在 iphone 5 中正确设置

ModalViewController 中的 UIImageView 正在忽略 ContentMode - iPhone

在 iPhone 上使用 UIImageView 进行图像缩放

iPhone 6和iPhone 6 Plus上的UIImageView高度缩放显示模式

IPHONE - 以不同时间淡入和淡出 UIImageView