重写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,赋值都是没有显式动画的.

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

目录
相关文章
|
5月前
|
前端开发
UniApp 中的 image 属性讲解
UniApp 中的 image 属性讲解
798 2
Winform控件优化之继承Control重写实现Layer遮罩层
通过继承Control控件类,进行重写,实现Layer效果的遮罩层,具体使用可直接看后面的介绍。主要功能如下:1. 遮罩层的透明度Alpha,默认125。255表示不透明。2. 设置遮罩层中心的图片
612 0
Winform控件优化之继承Control重写实现Layer遮罩层
|
开发工具
UIView的clipsTobounds属性
UIView的clipsTobounds属性
117 0
UIView的clipsTobounds属性
|
程序员 iOS开发
UIGestureRecognizer类常用属性以及方法
UIGestureRecognizer类常用属性以及方法
108 0
|
缓存 算法 Android开发
【Flutter】Image 组件 ( Image 组件简介 | Image 构造函数 | Image.network 构造函数 | Image.asset 构造函数 )
【Flutter】Image 组件 ( Image 组件简介 | Image 构造函数 | Image.network 构造函数 | Image.asset 构造函数 )
266 0
CAShapeLayer 类解析
CAShapeLayer类解析(一) —— 基本概览CAShapeLayer类解析(二) —— 基本使用
800 0
一个重要的类 CALayer
一个重要的类CALayer —— 基本概览(一)一个重要的类CALayer —— 其与UIView的区别(二)一个重要的类CALayer ——主要属性及其在显示图片中的简单应用(三)
771 0
scrollview的原理及一些属性(转)
在滚动过程当中,其实是在修改原点坐标 当手指触摸后, scroll view会暂时拦截触摸事件,使用一个 计时器,假如在计时器到点后,没有发生手指移动事件, 那么,scroll view发送tracking events到被点击的subview 假如在...
1137 0