UIButton透明度

超级猜图游戏图片放大效果图。

实现效果:点击图像或者大图按钮,图片会以动画的方式放大到宽度等于屏幕宽度,图片周围蒙上一层深色背景,点击背景的任何地方可以还原图片,但是不能响应背景后面的Action。

背景部分是可以点击的,那么它就是UIButton。在需要的时候创建一个UIButton,大小与屏幕的frame相等,背景色为浅色,背景色透明度为0.5,然后将Button加到self.view上。

- (UIButton *)cover

{

    if (_cover == nil)

    {

        _cover = [[UIButton alloc] initWithFrame:self.view.frame];

        

        _cover.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];

        

        [self.view addSubview:_cover];

        

        _cover.alpha = 0.0;

        

        [_cover addTarget:self action:@selector(bigImage:) forControlEvents:UIControlEventTouchUpInside];


    }

    

    return _cover;

}


为什么 _cover . alpha  =  0.0呢,两个原因:1.为了判断到底是放大还是缩小,2.如果刚开始透明度不为0.则被该Button挡住的Action无法响应鼠标事件。

- (IBAction)bigImage:(UIButton *)sender

{

    if (self.cover.alpha == 0)

    {

        //self.btnImageIcon放在所以subview的最前面

        [self.view bringSubviewToFront:self.btnImageIcon];

        

        CGFloat iconX = 0;

        CGFloat iconW = self.view.frame.size.width;

        CGFloat iconH = iconW;

        CGFloat iconY = (self.view.frame.size.height - iconH) * 0.5;

        

        //执行动画,放大imageIcon,并且设置透明度。

        [UIView animateWithDuration:1.0 animations:^{

            self.btnImageIcon.frame = CGRectMake(iconX, iconY, iconW, iconH);

            self.cover.alpha = 1.0;

        }];

    }

    else

    {

        [UIView animateWithDuration:1.0 animations:^{

            self.btnImageIcon.frame = CGRectMake(75, 95, 225, 225);

            

            //UIButton的透明度设置为0,就相当于设置setHidden = YES

            self.cover.alpha = 0.0;

        }];

    }

    

}


    由此可以看出,当 self . cover . alpha  =  0.0时,相当于 self . cover . hidden = YES,不会影响self.cover后面的Action事件响应。

    还有就是,- (UIButton *)cover,使用的是懒加载方式,就是在第一次使用的时候才会去执行此代码。懒加载简单说就是重写@property (nonatomic,strong)UIButton *cover属性的get方法。

;






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值