动画弹出半透明层

本文介绍了一种使用Objective-C实现的透明视窗动态显示与隐藏的方法,包括初始化代码、显示与隐藏的动画效果,以及如何将视窗显示在特定视图之上并进行位置调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// Initialization code

        self.backgroundColor = [UIColorclearColor];

        _mainWindow = [UIApplicationsharedApplication].keyWindow;

        _overlayWindow = [[UIWindow alloc] initWithFrame:SCREENBOUND];

        _overlayWindow.windowLevel = UIWindowLevelStatusBar;

        _overlayWindow.userInteractionEnabled = NO;

        _overlayWindow.backgroundColor = [UIColorcolorWithWhite:0.0falpha:0.0f];

        _overlayWindow.hidden = YES;

        [_overlayWindowmakeKeyWindow]; 

 

- (void)show

{

    _overlayWindow.hidden = NO;

    [UIViewanimateWithDuration:kDuration*1.5f

                          delay:0.0f

                        options:UIViewAnimationOptionCurveEaseOut

                     animations:^(){

                         _overlayWindow.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.35f];

                    }

                     completion:^(BOOL finished){

                         

                     }];

}

- (void)hide

{

    

    [UIViewanimateWithDuration:kDuration*1.5f

                          delay:0.0f

                        options:UIViewAnimationOptionCurveEaseOut

                     animations:^(){

                         _overlayWindow.backgroundColor = [UIColor colorWithWhite:0.0f alpha:0.0f];

                     }

                     completion:^(BOOL finished){

                         _overlayWindow.hidden = YES;

                     }];

 

}

 

- (void)showInView:(UIView *) view

{

    [self show];

    [view addSubview:_overlayWindow];

    

    CATransition *animation = [CATransition  animation];

    animation.delegate = self;

    animation.duration = kDuration;

    animation.timingFunction = [CAMediaTimingFunctionfunctionWithName:kCAMediaTimingFunctionEaseInEaseOut];

    animation.type = kCATransitionPush;

    animation.subtype = kCATransitionFromTop;

    [self setAlpha:1.0f];

    [self.layer addAnimation:animation forKey:@"DDLocateView"];

    

    self.frame = CGRectMake(0, view.frame.size.height - self.frame.size.height, self.frame.size.width, self.frame.size.height);

    

    

    [view addSubview:self];

 

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值