点击看大图

network | | 访问(49)
/**
 *  大图
 */
- (IBAction)bigImage
{
    // 1. 添加蒙板(遮罩)
    UIButton *cover = [[UIButton alloc] initWithFrame:self.view.bounds];
    cover.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];
    [self.view addSubview:cover];
    cover.alpha = 0.0;
    
    [cover addTarget:self action:@selector(smallImage:) forControlEvents:UIControlEventTouchUpInside];
    
    // 2. 将图像按钮弄到最前面
    // bringSubviewToFront将子视图前置
    [self.view bringSubviewToFront:self.iconButton];
    
    // 3. 动画放大图像按钮
    CGFloat w = self.view.bounds.size.width;
    CGFloat h = w;
    CGFloat y = (self.view.bounds.size.height - h) * 0.5;
    
    [UIView animateWithDuration:1.0f animations:^{
        self.iconButton.frame = CGRectMake(0, y, w, h);
        cover.alpha = 1.0;
    }];
}

/**
 *  小图
 */
- (void)smallImage:(UIButton *)cover
{
    // 动画一但定义,马上开始
    [UIView animateWithDuration:1.0 animations:^{
        // 将图像恢复初始位置
        self.iconButton.frame = CGRectMake(85, 85, 150, 150);
        cover.alpha = 0.0;
    } completion:^(BOOL finished) {
        // 动画完成之后删除cover
        [cover removeFromSuperview];
    }];
}

优化下,将创建蒙版的动作独立出来 懒加载

将创建蒙版的动作独立出来 懒加载 
@property (nonatomic, strong) UIButton *cover;
- (UIButton *)cover
{
    if (_cover == nil) {
        _cover = [[UIButton alloc] initWithFrame:self.view.bounds];
        _cover.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.5];
        [self.view addSubview:_cover];
        _cover.alpha = 0.0;
        [_cover addTarget:self action:@selector(smallImage:) forControlEvents:UIControlEventTouchUpInside];
    }
    return _cover;
}

/**
 *  大图
 */
- (IBAction)bigImage
{
    // 1. 添加蒙板(遮罩)
    [self cover];
    
    // 2. 将图像按钮弄到最前面
    // bringSubviewToFront将子视图前置
    [self.view bringSubviewToFront:self.iconButton];
    
    // 3. 动画放大图像按钮
    CGFloat w = self.view.bounds.size.width;
    CGFloat h = w;
    CGFloat y = (self.view.bounds.size.height - h) * 0.5;
    
    [UIView animateWithDuration:1.0f animations:^{
        self.iconButton.frame = CGRectMake(0, y, w, h);
        self.cover.alpha = 1.0;
    }];
}

/**
 *  小图
 */
- (void)smallImage:(UIButton *)cover
{
    // 动画一但定义,马上开始
    [UIView animateWithDuration:1.0 animations:^{
        // 将图像恢复初始位置
        self.iconButton.frame = CGRectMake(85, 85, 150, 150);
        cover.alpha = 0.0;
    } completion:^(BOOL finished) {
        // 动画完成之后删除cover
        // [cover removeFromSuperview]; // cover是全局的,现在不用删掉了
    }];
}

点击放大,再点击缩小

/**
 *  大图小图显示切换
 */
- (IBAction)bigImage
{
    // 如果没有放大,就放大,否则就缩小
    // 通过蒙板的alpha来判断按钮是否已经被放大
    if (self.cover.alpha == 0.0) { // 放大
        // 2. 将图像按钮弄到最前面
        // bringSubviewToFront将子视图前置
        [self.view bringSubviewToFront:self.iconButton];
        
        // 3. 动画放大图像按钮
        CGFloat w = self.view.bounds.size.width;
        CGFloat h = w;
        CGFloat y = (self.view.bounds.size.height - h) * 0.5;
        
        [UIView animateWithDuration:1.0f animations:^{
            self.iconButton.frame = CGRectMake(0, y, w, h);
            self.cover.alpha = 1.0;
        }];
    } else { // 缩小
        [UIView animateWithDuration:1.0 animations:^{
            // 将图像恢复初始位置
            self.iconButton.frame = CGRectMake(85, 85, 150, 150);
            self.cover.alpha = 0.0;
        }];
    }
}