У меня есть следующий код в моем представленииWillAppear в модальном uiviewcontroller.Как ускорить размытие изображения?
В этом примере я использую UIImage + ImageEffects.h, чтобы сделать размытие фонового изображения.
-(void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:NO];
// grab an image of our parent view
UIView *parentView = self.presentingViewController.view;
UIImage *parentViewImage = [self takeSnapshotOfView:parentView];
UIImage *blurredImage = nil;
//BLUR THE IMAGE
blurredImage = [self blurWithImageEffects:parentViewImage];
// insert an image view with a picture of the parent view at the back of our view's subview stack...
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.view.bounds];
imageView.image = blurredImage;
[self.view insertSubview:imageView atIndex:0];
}
[EDIT] Добавление методов Размытие
- (UIImage *)takeSnapshotOfView:(UIView *)view
{
CGFloat reductionFactor = 1.5;
UIGraphicsBeginImageContext(CGSizeMake(view.frame.size.width/reductionFactor, view.frame.size.height/reductionFactor));
[view drawViewHierarchyInRect:CGRectMake(0, 0, view.frame.size.width/reductionFactor, view.frame.size.height/reductionFactor) afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
- (UIImage *)blurWithImageEffects:(UIImage *)image
{
return [image applyBlurWithRadius:10 tintColor:[UIColor colorWithWhite:1 alpha:0.2] saturationDeltaFactor:1.5 maskImage:nil];
}
код прекрасно работает и на фоне появляется размыто, но это действительно заметно медленно на IPad 3 с прошивкой 8. При нажатии на кнопку, чтобы отобразить эту ViewController нажата пауза до того, как viewcontroller соскальзывает снизу. Если я удалю размытие, контроллер просмотра ускорится.
Я попытался поместить код в viewDidAppear, но затем на несколько секунд появится заметный белый фон, прежде чем появится размытие. Но когда в viewDidAppear viewcontroller немедленно сместится.
Если я уменьшу значение applyWithBlurRadius, это не уменьшит время, необходимое для применения размытия.
Есть ли способ заставить его работать быстрее?
Вы можете попробовать UIVisualEffect для устройств iOS 8. – skorulis
@skorulls Я бы, но у меня, похоже, не было такого же уровня контроля с помощью UIVisualEffects, поскольку есть только 3 уровня размытия, которые я не могу изменить. Я обновил свой вопрос с помощью метода размытия изображения. – motionpotion