模仿系統(tǒng)的UIImageView
整體思路:
我們想要模仿系統(tǒng)的UIImageView,我們必須得要知道系統(tǒng)的UIView怎么用.
第一種用法
系統(tǒng)的用法是創(chuàng)建一個(gè)UIImageView對(duì)象,設(shè)置frame,給它傳遞一個(gè)UIImage,再把它添加到一個(gè)View上面就可以了.
可以切換圖片.
第二種用法
就是在創(chuàng)建的時(shí)候直接傳遞一個(gè)UIImage對(duì)象,使用initWithImage的方法進(jìn)行創(chuàng)建一個(gè)UImageView的方式
用這種做法創(chuàng)建出來的UIImageView它的尺寸大小和原始圖片的尺寸大小一樣大.
所以我們自己的UIImageView也要具有這些功能.
實(shí)現(xiàn)步驟:
第一步:新建一個(gè)UIView,起名LLImageView.
第二步:給LLImageView添加一個(gè)UIImage屬性,供外界傳遞圖片
第三步:在DrawRect方法當(dāng)中把傳遞的圖片繪制到View上面
繪制方法為:[_image drawInRect:rect],繪制的圖片尺寸大小和UIView的尺寸大小一樣大.
第四步:重寫UIImage屬性的set方法,在set方法當(dāng)中讓View重新繪制.目的為了能夠辦到切換圖片.
第五步:提供一個(gè)- (instancetype)initWithImage:(UIImage *)image方法.
在這個(gè)方法當(dāng)中重寫init方法
在初始化時(shí),讓View尺寸和圖片的實(shí)際大小一樣大.
然后再給UIImage屬性賦值.
這樣在繪制圖片的時(shí)候,顯示出來的View已經(jīng)有尺寸了, 尺寸大小和圖片的實(shí)際大小一樣大.
具體代碼實(shí)現(xiàn):
1 - (instancetype)initWithImage:(UIImage *)image{
2 if (self = [super init]) {
3 self.frame = CGRectMake(0, 0, image.size.width, image.size.height);
4 _image = image;
5 }
6 return self;
7 }
8
9
10 -(void)setImage:(UIImage *)image{
11 _image = image;
12 [self setNeedsDisplay];
13 }
14
15 - (void)drawRect:(CGRect)rect {
16 [_image drawInRect:rect];
17 }