UIVisualEffectView, встроенный в раскадровку, непрозрачен

Я построил UIView в раскадровке, которая составлена ​​так:

UIView (called _view)

 UIVisualEffetView (dark)

  UIVIew

   Button

Я сделал это для возможности повторно использовать его между несколькими навигационными контроллерами. Поэтому для этого я установил все, и я могу показать свое представление в моем главном контроллере под названием "ViewController", который встроен в контроллер навигации. Но проблема в том, что размытие непрозрачно, например, синяя панель навигации моего контроллера представления не видна под UIVIsualAffectView!

Вот код, который я использую для настройки пользовательского представления:

- (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
        [self setup];
    }
    return self;
}

- (void)setup {
    _view.backgroundColor = [UIColor clearColor];
    UIView *rootView = [[[NSBundle mainBundle] loadNibNamed:@"SideMenuView" owner:self options:nil] objectAtIndex:0];

    CGRect newFrame = rootView.frame;

    newFrame.size.width = [[UIScreen mainScreen] bounds].size.width / 2;
    newFrame.size.height = [[UIScreen mainScreen] bounds].size.height;
    [rootView setFrame:newFrame];

    UIWindow* currentWindow = [UIApplication sharedApplication].keyWindow;
    currentWindow.backgroundColor = [UIColor clearColor];
    currentWindow.windowLevel = UIWindowLevelNormal;

    [currentWindow addSubview:rootView];

}

А вот код, который я использую для вызова представления из моего основного контроллера:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    [self.leftBarButton setTarget:self];
    [self.leftBarButton setAction: @selector(test)];
}

- (void)test {

    SideMenuView *test = [[SideMenuView alloc] init];
    [self.view addSubview:test];
    test.translatesAutoresizingMaskIntoConstraints = NO;

}

Я также попытался принудительно установить для свойства "setOpaque" значение Нет в моем SideMenuView.m, но безрезультатно

Вот скриншот того, что он делает:

Ребята, вы знаете, что не так с моим кодом?

Я также добавил кнопку в середине экрана с синим фоном, но она не видна под размытием, поэтому проблема не связана с панелью навигации.

Заранее спасибо за помощь!

1 ответ

Решение

Я решил свою проблему, просто создав UIView с четким фоном. Что я делаю для добавления эффекта размытия, так это для программного создания UIVisualEffectView (при этом все работает идеально!). После этого я добавляю свой UIView как подпредставление моего UIVisualEffectView и вуаля:)

Другие вопросы по тегам