Я создаю небольшие изображения плитки, которые будут храниться на диске и отображаться пользователю. Вот мой текущий процесс для этого:
- Создайте контроллер представления, который представляет пользовательский интерфейс, который я хочу показать на экране.
- Получить вид из контроллера представления и отобразить из него изображение.
- Сохраните его на диск и отобразите на экране позже
У меня происходит сбой, когда я пытаюсь получить доступ к представлению контроллера представления. Когда я пытался исследовать это в Интернете, я получаю противоречивые результаты о том, безопасно ли создавать представление в фоновом режиме. Я читаю, что вызов UIGraphicsGetCurrentContext должен быть потокобезопасным, но, возможно, не имеет доступа к UIView в фоновом потоке? Я пишу приложение для iOS 4 и выше. Вот код, который я использую (плитка - это контроллер просмотра):
CGSize size = CGSizeMake(20.0f, 30.0f);
UIGraphicsBeginImageContext(size);
[tile.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Сбой происходит при попытке доступа к свойству .view на плитке (EXC_BAD_ACCESS). Весь смысл в том, чтобы визуализировать представление в фоновом изображении, чтобы предотвратить блокировку пользовательского интерфейса, потому что нужно обработать много плиток.
Есть ли безопасный способ сделать это?