Получение UIView в отдельном классе для FXBlurView
Я использую FXBlurView, но я получаю странную черную линию вверху при анимации blurView вниз.
у меня есть UITable
это 3/4 до ViewController и изображение, которое остальное. Что происходит? То, что это только UITable
а не изображение, в суперпредставлении. Так есть ли способ получить superview
подобрать оба? или замена?
Я читал, что это можно исправить, заменив суперпредставление фактическим UIView
FXBlurView по умолчанию захватывает содержимое своего непосредственного суперпредставления. Если суперпредставление прозрачное или частично прозрачное, показанный за ним контент не будет захвачен. Вы можете переопределить
underlyingView
свойство для захвата содержимого другого представления, если вам нужно.
FXBlurView.m
код является:
- (UIView *)underlyingView
{
return _underlyingView ?: self.superview;
}
Я попробовал это:
((FXBlurView *)self.Genres).underlyingView = _main_view;
но это не имеет значения
где ImagesTableViewController
мой главный ViewController
содержащий Blured Uiview и тот, который я хочу скопировать (main_view
)
Но это просто создает белую страницу для Blured Uiview.
1 ответ
Во-первых, вам вообще не нужно редактировать источник FXBlurView.
Во-вторых, я предполагаю, что черная полоса является частью иерархии представлений, которая не поднимается. Может быть, Навбар? Вы можете попытаться добавить размытое представление к окну, а не к виду, чтобы захватить все:
[[[UIApplication sharedApplication] keyWindow] addSubview: blurView];
В противном случае я могу подумать только о том, чтобы создать imageView, который захватывает свое изображение с помощью окна, например:
- (UIImage *)screenGrab:(id) theView {
CGRect rect = [self.view bounds];
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
[theView.layer renderInContext:context];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
с:
[self screenGrab: [[UIApplication sharedApplication] keyWindow]];
Затем установите imageView.image для захваченного изображения и установите его как базовый вид. Вы не должны делать это, хотя:)
В противном случае мне нужно было бы увидеть немного больше кода, чтобы понять иерархию представлений.