У меня есть приложение, которое позволяет пользователю добавлять фотографию на свою фотографию и сохранять ее как приложение наклейки. У меня есть настройка, чтобы снять снимок экрана прямо сейчас, но проблема, с которой я сталкиваюсь, заключается в том, что она занимает скриншот всего UIView
, поэтому есть много свободного места, а UIButtons
видны в окончательной сохраненной фотографии в камере roll.Как сделать снимок экрана и вырезать пробел?
Как сделать снимок экрана, который выделяет пустое пространство из приложения?
Вот что я прямо сейчас ...
UIGraphicsBeginImageContextWithOptions(UIScreen.mainScreen().bounds.size, false, 0);
self.view.drawViewHierarchyInRect(view.bounds, afterScreenUpdates: true)
var image: UIImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil)
self.savedImageAlert()
self.dismissViewControllerAnimated(true, completion: nil)
Я играл вокруг с созданием границы равна UIImageview
называется userImageView, но что сделало мое фото искажен и до сих пор было много белого пространства только в верхняя часть фотографии вместо верхней и нижней.
Я новичок в Swift и нелегко с CG/UIGraphics, поэтому любая помощь была бы очень оценена ... Я потратил часы, исследуя это и все больше и больше сбиваясь с толку!
NOTE/UPDATE: Я изменил код на следующее:
// Я определил MyView вне обеих функций так, чтобы я мог ссылаться MyView как в функции и функции IBAction
let myView = UIView()
func imageWithView(myView:UIView)->UIImage{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
@IBAction func mergeAndSaveImage(sender: AnyObject) {
let newImage = imageWithView(myView)
UIImageWriteToSavedPhotosAlbum(newImage, nil, nil, nil)
self.savedImageAlert()
self.dismissViewControllerAnimated(true, completion: nil)
В моем раскадровке я создал новый UIView
, переименовал его и перетащил два моих UIImageViews
под ним в контур документа.
Я все еще не могу заставить это работать, когда я сохраняю изображение, он сохраняет весь экран с пробелом и UIbuttons
.
Во-первых, я не хочу, чтобы изображение с ноутбуком Детройта было таким маленьким, на раскадровке оно намного больше, но когда я запускаю приложение, оно становится маленьким в uiview.
Во-вторых, код просто сохраняет изображение всего экрана ... Я хочу, чтобы UIView содержал два изображения, которые нужно сохранить в качестве изображения.
Вот что это экономит ....
«Когда вы закончите изменения контекста, необходимо вызвать Функция UIGraphicsEndImageContext для очистки среды рисования растровых изображений и удаления графического контекста из вершина стека контекста. " https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIGraphicsBeginImageContextWithOptions –
@LeoDabus Спасибо, Отредактировано решение. –
Я пытаюсь подключить его к IBAction, ранее он был настроен так, что при нажатии кнопки функция выполнялась. У меня с этим трудное время, так как оно имеет возвращаемое значение ... как я могу справиться с этим? Извините, если это глупый вопрос, я все еще новичок! –