2014-07-02 46 views
2

在我的應用我有拍照,並通過PIC添加以下信息,這些信息是:合併在UIView的多個視圖

  • 天氣預報
  • 溫度
  • GPS定位

到現在爲止我用GPS和天氣預報Web服務(開放的天氣圖)獲得了這些信息。我做了這麼:

  1. 我拍照與標準UIImagePicker
  2. 我把我的界面上的按鈕來顯示畫面給用戶

當用戶按下按鈕應用程序開啓一個新的ViewController,我在其中顯示圖片,並添加了2個UILabel(一個用於溫度,一個用於位置)和一個UIImageView(顯示關於天氣預報的圖標)。我直接在StoryBoard上繪製UILabels和UIImageView。 現在我需要將圖片與2 UILabel和UIImageView合併,有一種方法可以將它們合併到單個UIImageView中? 我已經這樣做節省隨着天氣的預報和位置

更新圖片

我創建一個按鈕來保存標籤和ImageView的,我寫的代碼是這樣的畫面:

- (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]; 

}

但是,當我走在Documents目錄,看看我是否正確保存的圖片我並不覺得。

+0

變化'NSDocumentationDirectory'到'NSDocumentDirectory' – iphonic

+0

謝謝!現在它工作了!只是一個問題,當我做這個操作爲什麼UILabel和UIImageView移動一點點? – lucgian841

+0

可能是由於查看模式,我不確定。我認爲你可以玩你正在創建的上下文大小。 – iphonic

回答

1

是的,你可以很容易地通過捕獲它們。遵循步驟。

  1. 在故事板中創建一個小的父視圖,將所有需要捕獲的控件放在一起。創建一個插座說captureView

  2. 呼叫時,您需要滿足以下功能。

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

乾杯。

+0

謝謝你的回答,我更新了問題,向你展示了我的代碼。我希望你能幫我解決這個問題。 – lucgian841

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 

如果一切順利的權利,你應該有你的「屏幕截圖」在相冊

+0

我試過這個解決方案,但我不想保存屏幕截圖...如果我保存屏幕截圖,我也會得到按鈕和頂部欄,我只想要圖片... – lucgian841