[英]Scrollview Images creates issue
我在应用程序中使用“相机”选择“图像”并尝试以水平滚动视图显示。
但是图像重叠
我的密码
-(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
如上所示,首先拍摄了Landscape Image2,然后拍摄了Portrait Image 1。
但是如您所见,图像1具有图像2的背景。
我认为这是因为scrollview出了点问题?
可能性2(大多数情况下) Scrollview保留了Imageview的强引用,即使它已从数组中删除
让我知道如何解决这个问题?
帮我解决这个问题
谢谢
您需要在循环中设置Y值,您的图片Y值随时都可以设置为相同,
每次拍摄新图像时,您的完成处理程序会将新图像作为第一个元素放入数组中,然后调用[self scrollImages_Setup2];
在其中迭代数组中的所有元素,并将它们作为新的子视图添加到滚动视图中。
当您拍摄第一个图像(Image1)时,它将被添加到数组中,然后作为和子视图添加到滚动视图中。 当您拍摄第二张图片(Image2)时,它会作为第一个元素添加到数组中。 因此,数组中有两个元素(Image2和Image1)都作为子视图添加到滚动视图中。 但是Image1已经被添加到滚动视图中,因此导致了您的问题。
解决该问题的方法可能是始终只添加新图像并使用数组中元素的数量计算x位置,或者总是在再次添加和布局所有图像之前删除所有子视图。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.