2016-03-24 1 views
0

J'ai construit un UIView en story-board qui se compose comme suit:UIVisualEffectView construit en story-board est opaque

UIView (called _view) 

UIVisualEffetView (dark) 

    UIVIew 

    Button 

Je l'ai fait comme ça pour la capacité de réutiliser entre plusieurs contrôleur de navigation. Donc, pour cela, j'ai tout réglé et je peux montrer ma vue dans mon contrôleur principal appelé "ViewController" qui est intégré dans un contrôleur de navigation. Mais le problème est que le flou est opaque, par exemple la barre de navigation bleue de mon contrôleur de vue n'est pas visible sous UIVIsualAffectView!

Voici le code que j'utilise pour la mise en place de la vue personnalisée:

- (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]; 

} 

Et voici le code que j'utilise pour appeler la vue de mon contrôleur principal:

- (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; 

} 

J'ai également essayé de forcer la propriété « setOpaque » Non dans mon SideMenuView.m mais sans effet

Voici une capture d'écran de ce qu'il faut faire:

enter image description here

Connaissez-vous les gars ce qui ne va pas avec mon code?

J'ai également ajouté un bouton au milieu de l'écran avec un fond bleu, mais ce n'est pas visible sous le flou de sorte que le problème n'est pas la barre de navigation spécifique

Merci d'avance pour votre aide!

Répondre

0

J'ai résolu mon problème en créant simplement un UIView avec un arrière-plan clair. Ce que je fais pour ajouter l'effet de flou est de créer le UIVisualEffectView par programmation (de cette façon, cela fonctionne parfaitement!). Après cela, j'ajoute mon UIView comme sous-vue de mon UIVisualEffectView et voila :)