Я хочу использовать UIVIsualEffectView для добавления размытого эффекта в панель навигации. У меня есть настраиваемый класс навигационной панели, как показано ниже.
Заголовочный файлКак добавить UIVisualEffectView в UINavigationBar в iOS 8?
#import <UIKit/UIKit.h>
@interface GSNavigationBar : UINavigationBar
@end
И immplementation файл выглядит следующим образом
#import "GSNavigationBar.h"
@implementation GSNavigationBar
- (void) awakeFromNib {
UIVisualEffectView *visualEffectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight]];
visualEffectView.frame = CGRectMake(0, -21, self.frame.size.width , self.frame.size.height + 21);
[self setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
[self insertSubview:visualEffectView atIndex:1000];
}
@end
С кодом выше я могу реализовать расплывчатый эффект панели навигации. При нажатии контроллера просмотра (с помощью «Push» segue) элементы левой панели и элементы правой панели на панели навигации становятся неактивными. Для большей ясности я добавил скриншоты контроллеров представлений.
This is view controller #1. All navigation item buttons are clickable
This is view controller #2. We land up here due to push segue from view controller #1. Navigation item buttons are NOT clickable. Also the title goes missing. I had set the title using self.title
Почему вы добавив пустое изображение в панели навигации? Навигационная панель уже имеет эффект размытия, вы должны использовать это. –