首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ScrollView中显示相机拍摄的图像

在ScrollView中显示相机拍摄的图像
EN

Stack Overflow用户
提问于 2015-03-17 20:05:51
回答 2查看 365关注 0票数 0

我有一个简单的应用程序,只有一个按钮。当用户点击它时,他可以拍摄一张照片,在相机中点击“完成”,然后保存它并在ScrollView上看到它。

然而,当他正在拍摄另一张照片并在相机中点击“完成”时,新的图片覆盖了前一张,他只能看到他所拍摄的照片。

我想保存所有这些图片,然后如果用户采取4-5图片,他可以看到他们所有的滚动他们。

这是我的代码,我不知道为什么它不起作用。

代码语言:javascript
复制
- (IBAction)Camera:(id)sender {
    UIImagePickerController *picker = [[UIImagePickerController alloc] init];
    picker.delegate = self;
    picker.allowsEditing = YES;
    picker.sourceType = UIImagePickerControllerSourceTypeCamera;
    [self presentViewController:picker animated:YES completion:NULL];

}


- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{

    NSMutableArray *images = [NSMutableArray arrayWithCapacity:[info count]];
    for (UIView *v in [_scrollView subviews]) {
        [v removeFromSuperview];
    }
     [self dismissViewControllerAnimated:YES completion:nil];

    UIImage* image=[info valueForKey:@"UIImagePickerControllerEditedImage"];
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
                UIImageView *imageview = [[UIImageView alloc] initWithImage:image];
                [_scrollView addSubview:imageview];
    [images addObject:image];
    self.chosenImages = images;
    UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil);
    [_scrollView setPagingEnabled:YES];

}

和报头中有一个chosenImages数组

@property (非原子,复制) NSArray *chosenImage;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-17 20:22:04

您的代码有很多错误。每次用户选择一个图像时,您都会从滚动视图中删除所有子视图,然后只添加单个选定的图像。

您有一个数组chosenImages,您可以使用它来保存所有选定的图像,但是您可以用一个新的数组来替换它,即图像,它只包含单个新选定的图像。

您可以将图像作为可变数组分配,该数组具有足够的容量来计算在didFinishPickingMediaWithInfo中获得的信息字典,但是这样做没有意义。该字典的计数将是字典中键/值对的数量,它不反映用户选择的图像的数量(我相信用户选择的图像数量总是1,忽略了原始图像和(可能)编辑的图像等不同格式)。

我建议将前面的图像保留在滚动视图中,跟踪这些图像的数量和位置,并在用户选择之后简单地向滚动视图添加一个新的图像。

您可能会考虑在页面滚动模式中使用UIPageViewController,而不是原始滚动视图。它比滚动视图更好地管理分页滚动。苹果公司有一个名为PhotoScroller (链接)的示例应用程序,它甚至支持图像的平铺渲染、逐点缩放和在图像周围进行平移。为了处理这些图像,将这些代码插入应用程序是非常容易的。(您可能不会决定处理这些平铺图像-我将PhotoScroller代码与平铺图像支持一起改编成了一个客户端项目,生成图像块是一项相当大的工作。)

票数 1
EN

Stack Overflow用户

发布于 2015-03-17 20:11:50

假设self.chosenImagesNSMutableArray类型的,尝试如下

代码语言:javascript
复制
[self.chosenImages addObjectsFromArray:images] 

而不是

代码语言:javascript
复制
self.chosenImages = images;

如果它不是可变的,则可以将其设置为:

代码语言:javascript
复制
NSMutableArray *newArray = [self.chosenImages mutableCopy];
newArray = [newArray addObjectsFromArray:images];
self.chosenImages = [newArray copy];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29108700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档