Objective c 如何在视图控制器滑出时产生模糊效果
我有一个带滑出菜单的程序。菜单按钮BarbuttonItem位于正确的位置。当视图控制器加载时,我将执行下一步操作Objective c 如何在视图控制器滑出时产生模糊效果,objective-c,ios7,Objective C,Ios7,我有一个带滑出菜单的程序。菜单按钮BarbuttonItem位于正确的位置。当视图控制器加载时,我将执行下一步操作 _menuBarButton.target = self.revealViewController; _menuBarButton.action = @selector(revealToggle:); 因此,当我单击此按钮时,视图控制器向右滑出,我看到另一个视图控制器 所以,我想在主视图控制器滑出时使其模糊。我有一个代码来实现模糊,但是我不能实现这个代码,因为当我点击bat按钮时
_menuBarButton.target = self.revealViewController;
_menuBarButton.action = @selector(revealToggle:);
因此,当我单击此按钮时,视图控制器向右滑出,我看到另一个视图控制器
所以,我想在主视图控制器滑出时使其模糊。我有一个代码来实现模糊,但是我不能实现这个代码,因为当我点击bat按钮时,它会运行Revealtogle:selector
我试过:
1.设置工具栏按钮的操作。首先,模糊视图控制器:
- (IBAction)menuBarButtonTapped:(UIBarButtonItem *)sender {
[self setBlurEffect];
_menuBarButton.target = self.revealViewController;
_menuBarButton.action = @selector(revealToggle:);
[self.menuBarButton.target performSelector:@selector(revealToggle:)];
}
但应用程序崩溃,无法识别选择器。此问题的解决方案不起作用
我也帮不上忙
我想使用willDisapear方法,但它没有运行,因为主视图控制器没有disapear。它只是滑出来的。
那么,你能帮我解决这个问题吗
另外,如果您为主视图控制器提供除模糊之外的任何其他效果,我将非常高兴。
P.P.S.对问题中的许多错误表示抱歉。
我找到了一个很好的答案。我不使用几个视图控制器来实现菜单面板。 现在我正在使用另一个名为menuPanel的UIView。它包含tableViewUITableView和blurViewUIView。第二个在第一个下面。 您可以通过以下方式模糊此视图:
从代码中使用下一个方法 (void) setBlurEffect {// Add blur view
CGRect boundsView = self.someView.bounds;
UIVisualEffectView *tableViewVisualEffect = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleExtraLight]];
self.tableViewVisualEffect.frame = boundsView;
self.tableViewVisualEffect.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.tableViewVisualEffect.backgroundColor = [UIColor clearColor];
[UIView transitionWithView:self.view
duration:0.3
options:UIViewAnimationOptionTransitionCrossDissolve
animations: ^ {
[self.someView addSubview:self.tableViewVisualEffect];
}
completion: nil ];
// Here you can add visual effects to any UIView control.
// Replace custom view with navigation bar in above code to add effects to custom view.
}
其中someView是您要执行的视图或任何其他效果
从具有视觉效果视图的故事板。我选择了
毕竟,我已经将tableView和blurView设置为menuPanelView,并以0距离固定在menuPanel的所有边上
我做的最后一件事是用动画改变menuPanelView的位置:
[self.menuPanelView setFrame:self.visibleTableViewFramePosition];
[UIView animateWithDuration:0.8
animations:^{
[self.menuPanelView setFrame:self.invisibleTableViewFramePosition];
} completion:nil];
其中invisibleTableViewFramePosition是CGRect变量,该变量包含menuPanelView在必须不可见时的位置。您还需要创建visibleTableViewFramePosition
就这些。希望它能对某人有所帮助=