• 重写UIImageView的image属性


    重写UIImageView的image属性

    效果:

    当你重写了UIImageView的image属性后你就会对UIImageView怎么显示图片了如指掌了:)

    源码:

    UIImageView.h  +  UIImageView.m

    //
    //  LiveImageView.h
    //  Progress
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import <UIKit/UIKit.h>
    
    @interface LiveImageView : UIImageView
    
    @property (nonatomic, assign)  CGFloat  duration;
    
    @end
    //
    //  LiveImageView.m
    //  Progress
    //
    //  Copyright (c) 2014年 Y.X. All rights reserved.
    //
    
    #import "LiveImageView.h"
    
    @interface LiveImageView ()
    
    {
        CALayer  *_Layer;
    }
    
    @end
    
    @implementation LiveImageView
    
    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self)
        {
            _duration = 0.3f;
            _Layer = self.layer;
        }
        return self;
    }
    
    // 重写image的setter与getter方法
    @synthesize image = _image;
    
    - (void)setImage:(UIImage *)image
    {
        if (_image != image)
        {
            CABasicAnimation *ani = [CABasicAnimation animationWithKeyPath:@"contents"];
            ani.fromValue = (__bridge id)(_image.CGImage);
            ani.toValue   =  (__bridge id)(image.CGImage);
            ani.duration  = _duration;
            _Layer.contents = (__bridge id)(image.CGImage);
            [_Layer addAnimation:ani forKey:nil];
            
            _image = image;
        }
    }
    
    - (UIImage *)image
    {
        return _image;
    }
    
    @end

    以下是核心代码:

    系统的setter方法绝对是这么写的哦:),亲自测试,因为是backed layer,赋值都是没有显式动画的.

    以下地方是改变尺寸的动画代码

  • 相关阅读:
    Codeforces Round #665 (Div. 2) C. Mere Array 数论,思维
    Codeforces Round #665 (Div. 2) B
    ZOJ
    HDU-2158 最短区间版大家来找茬 模拟 尺取
    HDU-1082 排列组合 普通生成函数 细节
    HDU
    poj-1651 multiplication puzzle(区间dp)
    hdu-1231 连续最大子序列(动态规划)
    poj-2488 a knight's journey(搜索题)
    hdu-2063 过山车(二分图)
  • 原文地址:https://www.cnblogs.com/YouXianMing/p/3800947.html
Copyright © 2020-2023  润新知