【问题标题】:Scrollview Images creates issue滚动视图图像产生问题
【发布时间】:2015-09-18 06:46:46
【问题描述】:

我在我的应用中使用相机选择图像并尝试在水平滚动视图中显示。

但图像重叠

我的代码

-(IBAction)act_photo:(id)sender
{
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    //picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
     [self presentViewController:picker animated:YES completion:NULL];
}

#pragma mark - Image Picker via Camera
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {

    UIImage *chosenImage = info[UIImagePickerControllerOriginalImage];

[picker dismissViewControllerAnimated:YES completion:^{
        [arr_images insertObject:chosenImage atIndex:0];
        [self scrollImages_Setup2];

    }];

}

-(void)scrollImages_Setup2
{    
    for (int k=0; k<arr_images.count; k++) {

        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake((CGRectGetWidth(scl.frame) * k) + CGRectGetWidth(scl.frame), 0, CGRectGetWidth(scl.frame), CGRectGetHeight(scl.frame))];

        imageView.contentMode = UIViewContentModeScaleAspectFit;
        imageView.image=[arr_images objectAtIndex:k] ;
        [scl addSubview:imageView];
    }

    scl.contentSize = CGSizeMake((CGRectGetWidth(scl.frame) * arr_images.count)+CGRectGetWidth(scl.frame), CGRectGetHeight(scl.frame));

}

问题

图片1

图片 2

如上图所示,我首先拍摄的是横向图像 2,然后是纵向图像 1。

但如您所见,图片 1 的背景是图片 2。

我认为这是因为滚动视图出了问题?

可能性 2(大部分) Scrollview 保持对 Imageview 的强引用,即使它从数组中删除

告诉我如何解决这个问题?

帮我解决这个问题

谢谢

【问题讨论】:

  • 为什么要再次添加图像。当您第二次选择图像时,它将再次在滚动视图中为第一个图像添加图像。因为每次从相机胶卷中选择图像时,您都会添加所有图像重叠。

标签: ios objective-c iphone uiscrollview uiimageview


【解决方案1】:

您需要在循环中设置 Y 值,您的图像 Y 值随时相同,

【讨论】:

    【解决方案2】:

    每次拍摄新图像时,您的完成处理程序将新图像作为第一个元素放入数组中,然后调用 [self scrollImages_Setup2]; 迭代数组中的所有元素并将它们作为新子视图添加到滚动视图.

    当您拍摄第一张图片 (Image1) 时,它会被添加到数组中,然后作为子视图添加到您的滚动视图中。当您拍摄第二张图像 (Image2) 时,它将作为第一个元素添加到数组中。那么数组中有两个元素(Image2 和 Image1),它们都作为子视图添加到滚动视图中。但是 Image1 已经添加到滚动视图中,所以这会导致您的问题。

    解决问题的方法可能是始终仅添加新图像并使用数组中元素的数量计算 x 位置,或者始终在添加和重新布局所有图像之前删除所有子视图。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-03
      • 2011-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多