Quartz2D的基本使用(第五讲:使用Quartz2D给UIView扩展设置背景图片的分类)
一、基本思路1、系统原生态的UIView只有设置背景颜色的方法,并不提供设置背景图片的方法,但有些场景下我们需要对view设置背景图片,尤其是继承自UIView的其他类,因经我们需要通过分类(Category)给UIView扩展一个设置背景图片的方法;
2、基本出发点是UIView的设置背景颜色方法中,有一个可以通过图片平铺来当作颜色使用,如果我们平铺的图片大小与当前的View大小正好相同,则只平铺一张,效果与背景图片完全一致;
3、问题来了,那我给一张大小相同的图片不就结了吗?这个其实是有漏洞的,比如屏幕适配的问题,你如何保证不同大小屏幕的手机都能正好铺满当前View呢?
4、废话不多说,先开启一个图片上下文,将图片以当前View大小渲染到图片上下文
5、取出当前上下文的图片
6、利用UIColor的colorWithPatternImage:方法将图片平铺上去
7、关闭图片上下文,搞定!
PS:写成UIView的分类,很多几乎所有的View都能用了,相当方便!
二、示例代码:
//
//UIView+SA.m
//MIG
//
//Created by 余西安 on 14/12/1.
//Copyright (c) 2014年 Sian. All rights reserved.
//
#import "UIView+SA.h"
@implementation UIView (SA)
- (void)setBackground:(NSString *)imageName
{
// 1、通过图片名加载图片对象
UIImage *image = ;
// 2、开启图片上下文
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0.0);
// 3、根据当前视图大小绘制一张相同大小图片
CGRect viewRect = self.bounds;
;
// 4、取出该图片
UIImage *background = UIGraphicsGetImageFromCurrentImageContext();
// 5、利用背景颜色设置方法将图片平铺上去
self.backgroundColor = ;
// 6、关闭图片上下文
UIGraphicsEndImageContext();
}
@end
页:
[1]