Еще одна вещь, которую вы пытаетесь решить, пытаясь решить проблемы с индексацией, и вы так далеко от страницы!
Попробуйте добавить этот флаг к настройкам сборки.
Xfrontend -warn-long-expression-type-checking=400
[/g0]
Это вызовет предупреждение, когда компилятор занимает много времени, чтобы вывести сложное выражение.
[/g1]
Это может привести к ошибке сборки, которая исчезнет после того, как вы найдете медленные выражения, а затем удалите флаг сборки.
Новый API был добавлен после iOS 7, что должно обеспечить эффективный способ получения снимка
snapshotViewAfterScreenUpdates:
визуализирует представление в UIView с неизменяемым content
resizableSnapshotViewFromRect:afterScreenUpdates:withCapInsets
: то же самое, но с изменяемыми размерами вставок
drawViewHierarchyInRect:afterScreenUpdates:
: то же самое, если вам нужны все подпредставления нарисованные тоже (например, метки, кнопки ...)
Вы можете использовать UIView
для любого эффекта пользовательского интерфейса или визуализировать изображение, как вы сделали, если вам нужно экспортировать .
Я не знаю, насколько хорошо этот новый метод работает по сравнению с предоставленным вами (хотя я помню инженеров Apple, которые говорили, что этот новый API был более эффективным)
Вы можете попробовать это
- (UIImage *) screenshot {
UIGraphicsBeginImageContextWithOptions(self.view.bounds.size, NO, [UIScreen mainScreen].scale);
[self.view drawViewHierarchyInRect:self.view.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
в iOS 8 : так я делаю, чтобы получить ScreenShot
@property (слабый, неатомный) IBOutlet UIImageView * imageView;
-(IBAction)takeSnapShot:(id)sender;
2 добавлен фрагмент кода для создания снимка экрана и установите на UIImageView в файле .m
- (IBAction)takeSnapShot:(id)sender
{
UIGraphicsBeginImageContext(self.view.bounds.size);
[self.view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *snapShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
imageView.image = snapShotImage;
}
Убедитесь, что opaque
установлено на NO
На iOS7 могут возникнуть глюки, если вы используете
[view drawViewHierarchyInRect:view.bounds afterScreenUpdates:YES]
во время продолжающейся анимации. Установите afterScreenUpdates = NO
, чтобы избавиться от глюков.