在uiview中合并多个视图

时间:2014-07-02 09:03:03

标签: ios uiimageview

在我的应用中,我可以拍照并在照片上添加以下信息,这些信息包括:

  • 天气预报
  • 温度
  • GPS位置

到目前为止,我通过使用GPS和网络服务获取这些信息进行天气预报(开放天气图)。我这样做了:

  1. 我用标准的UIImagePicker拍摄照片
  2. 我在界面上放了一个按钮,向用户显示图片
  3. 当用户按下按钮时,应用程序打开一个新的ViewController,我在其中显示刚拍摄的照片,我添加了2个UILabel(一个用于温度,一个用于位置)和一个UIImageView(用于显示关于天气预报的图标) )。 UILabels和UIImageView我直接在StoryBoard上绘制。 现在我需要将图片与2 UILabel和UIImageView合并,有一种方法可以将它们合并到一个UIImageView中吗? 我可以用天气预报和位置保存图片

    更新

    我创建了一个按钮来保存带有标签和imageview的图片以及我编写的代码' s:

    - (IBAction)buttonSavePicture:(UIButton *)sender {
    [self.imageView addSubview:self.labelPlace];
    [self.imageView addSubview:self.labelTemperature];
    [self.imageView addSubview:self.imageViewWeather];
    
    UIGraphicsBeginImageContext(self.imageView.bounds.size);
    [self.imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentationDirectory, NSUserDomainMask, YES);
    NSString *filePath = [[paths objectAtIndex:0] stringByAppendingPathComponent:self.filename];
    
    [UIImageJPEGRepresentation(finalImage, 1) writeToFile:filePath atomically:YES];
    

    }

    但是当我去文件目录时,如果我正确保存了我无法找到的图片。

2 个答案:

答案 0 :(得分:1)

是的,您可以通过捕获它们轻松完成。按照步骤。

  1. 在storyboard中创建一个小的父视图,将要捕获的所有控件放在一起。创建一个名为captureView的商店。

  2. 根据需要调用以下函数。

    -(void)capture{
    
          UIGraphicsBeginImageContext(self.captureView.bounds.size);
          [self.captureView.layer renderInContext:UIGraphicsGetCurrentContext()];
          UIImage *capturedImage = UIGraphicsGetImageFromCurrentImageContext();
          UIGraphicsEndImageContext();
    
          //FINAL OUTPUT
          self.imageView.image=capturedImage;
    }
    
  3. 干杯。

答案 1 :(得分:1)

如果您使用iOS7,请查看snapshotViewAfterScreenUpdates:和drawViewHierarchyInRect:afterScreenUpdates:这个用于包含或捕获像标签等子视图。这将返回屏幕上所有内容的单个UIView,然后将其保存为UIImage

CGSize imgSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
UIGraphicsBeginImageContextWithOptions(imgSize, NO , 0.0f);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *weatherImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(weatherImage, nil, nil, nil; //save to saved image album

如果一切顺利,你应该有你的"截图"在相册中