Sian 发表于 2014-12-1 16:10:42

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]
查看完整版本: Quartz2D的基本使用(第五讲:使用Quartz2D给UIView扩展设置背景图片的分类)