37、[ iOS ] 底部弹出View

作者: 天听云道 | 来源:发表于2016-04-22 09:58 被阅读3630次

    效果如下:

    底部弹出View.gif
    #define SCREEN_WIDTH         ([[UIScreen mainScreen] bounds].size.width)
    #define SCREEN_HEIGHT        ([[UIScreen mainScreen] bounds].size.height)
    
    @property (nonatomic ,strong) UIView *deliverView; //底部View
    @property (nonatomic ,strong) UIView *BGView; //遮罩
    
    - (void)appearClick {
     // ------全屏遮罩
        self.BGView                 = [[UIView alloc] init];
        self.BGView.frame           = [[UIScreen mainScreen] bounds];
        self.BGView.tag             = 100;
        self.BGView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.0];
        self.BGView.opaque = NO;
        
        //--UIWindow的优先级最高,Window包含了所有视图,在这之上添加视图,可以保证添加在最上面
        UIWindow *appWindow = [[UIApplication sharedApplication] keyWindow];
        [appWindow addSubview:self.BGView];
        
        // ------给全屏遮罩添加的点击事件
        UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(exitClick)];
        gesture.numberOfTapsRequired = 1;
        gesture.cancelsTouchesInView = NO;
        [self.BGView addGestureRecognizer:gesture];
        
        [UIView animateWithDuration:0.3 animations:^{
           
            self.BGView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.2];
            
        }];
        
        // ------底部弹出的View
        self.deliverView                 = [[UIView alloc] init];
        self.deliverView.frame           = CGRectMake(0, SCREEN_WIDTH, SCREEN_WIDTH, SCREEN_WIDTH);
        self.deliverView.backgroundColor = [UIColor whiteColor];
        [appWindow addSubview:self.deliverView];
    
        // ------View出现动画
        self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);
        [UIView animateWithDuration:0.3 animations:^{
           
            self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, 0.01);
    
        }];
    }
    
    /**
     * 功能: View退出
     */
    - (void)exitClick {
    
        NSLog(@"====");
        [UIView animateWithDuration:0.3 animations:^{
            
            self.deliverView.transform = CGAffineTransformMakeTranslation(0.01, SCREEN_HEIGHT);
            self.deliverView.alpha = 0.2;
            self.BGView.alpha = 0;
            
        } completion:^(BOOL finished) {
           
            [self.BGView removeFromSuperview];
            [self.deliverView removeFromSuperview];
        }];
    
    }
    
    
    

    相关文章

      网友评论

        本文标题:37、[ iOS ] 底部弹出View

        本文链接:https://www.haomeiwen.com/subject/dmfxrttx.html