Попытайтесь выбрать от user_tables, который перечисляет таблицы, принадлежавшие текущему пользователю.
Это ужасно и медленно. В основном вы создаете контекст растрового изображения с резервным хранилищем, которое вы выделяете, чтобы вы могли читать память, затем вы визуализируете слой представлений в контексте и считываете соответствующую точку в оперативной памяти.
Если вы уже знаете, как это сделать для изображения вы можете сделать что-то вроде этого:
- (UIImage *)imageForView:(UIView *)view {
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *retval = UIGraphicsGetImageFromCurrentImageContext(void);
UIGraphicsEndImageContext();
return retval;
}
И тогда вы получите изображение, из которого вы можете получить данные о пикселях. Я уверен, что имеющийся у вас механизм работы с изображениями в любом случае включает их рендеринг в контексте, так что вы можете объединить это с этим и исключить фактическое создание изображения. Так что, если вы возьмете это, удалите бит, в котором вы загружаете изображение, и замените его контекстным рендером:
[view.layer renderInContext: UIGraphicsGetCurrentContext()];
, все должно быть хорошо.
Исправлены некоторые незначительные ошибки
- (UIImage *)imageForView:(UIView *)view {
UIGraphicsBeginImageContext(view.frame.size);
[view.layer renderInContext: UIGraphicsGetCurrentContext()];
UIImage *retval = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return retval;
}
Также добавьте
#import <QuartzCore/QuartzCore.h>
в свой файл, чтобы избежать предупреждающих сообщений.
Объединение вашего кода с кодом, найденным здесь , работает безупречно .