视图控制器滑出时如何使模糊效果

时间:2015-01-18 15:41:44

标签: objective-c ios7

我有一个带滑出菜单的程序。菜单按钮(BarButtonItem)位于正确的位置。当视图控制器加载我正在进行下一步

_menuBarButton.target = self.revealViewController;
_menuBarButton.action = @selector(revealToggle:);

因此,当我点击此按钮时,View Controller向右滑动,我看到另一个View Controller。

所以,我想让主视图控制器在滑出时模糊。我有一个代码如何模糊,但我无法实现此代码,因为当我点击bat按钮时,它会运行revealToggle:selector。

我试过了: 1.设置条形按钮的操作。首先模糊视图控制器:

- (IBAction)menuBarButtonTapped:(UIBarButtonItem *)sender {
    [self setBlurEffect];
    _menuBarButton.target = self.revealViewController;
    _menuBarButton.action = @selector(revealToggle:);
    [self.menuBarButton.target performSelector:@selector(revealToggle:)];
}

但是应用程序崩溃了"无法识别的选择器" (这个问题的解决方案没有 也帮忙。)

  1. 我想使用willDisapear方法,但它没有运行,因为主视图控制器没有消失。它滑出来了。
  2. 那么,你能帮我解决这个问题吗?

    P.S。如果您为主视图控制器提出除模糊之外的任何其他效果,我会很高兴。 P.P.S.很抱歉有很多错误。

1 个答案:

答案 0 :(得分:0)

我找到了一个很好的答案。我没有使用几个ViewControllers来实现菜单面板。 现在我正在使用另一个UIView调用menuPanel。它包含tableView(UITableView)和blurView(UIView)。第二个是第一个。 您可以将此视图模糊为:

  1. 使用下一个方法的代码。

         (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.
    }
    
  2. 在某些视图中,你想要模糊(或任何其他效果)

    1. 来自Visual Effect View的故事板。(我选择了)
    2. 毕竟我将tableView和blurView设置为menuPanelView,固定在menuPanel的所有边上,距离为0。

      我做的最后一件事我正在用动画改变menuPanelView的位置:

              [self.menuPanelView setFrame:self.visibleTableViewFramePosition];
      
               [UIView animateWithDuration:0.8
                                animations:^{
                           [self.menuPanelView setFrame:self.invisibleTableViewFramePosition];
               } completion:nil];
      

      其中invisibleTableViewFramePosition是CGRect变量包含menuPanelView的位置,当它必须是不可见的时。您还需要创建visibleTableViewFramePosition。

      这就是全部。希望它可能对某人有帮助=)

相关问题