解决使用drawRect绘制界面,图片拉伸问题

来源:互联网 发布:推荐系统常用算法 编辑:程序博客网 时间:2024/06/07 02:34

今天在解决一个问题,已知我有一个View是用drawRect绘制的,该view有一个背景图片,但是设计师提供的图片很小,而且这个view大小也是不定的,随时都有可能会变化,现在问题是:如何正确拉伸该背景图片使之正确绘制到view上?

之前遇到的问题是,我拉伸了图片,但是一直无效,将UIImage对象生硬的绘制上,图片被按照一定比例拉伸,很虚,而需求是局部拉伸。最后我的解决办法是


+ (void)drawTiledBackgroundAtCTX:(CGContextRef)ctx drawBoardRect:(CGRect)mRect imageName:(NSString *)strName{    UIGraphicsBeginImageContext(mRect.size);    UIImage* tiledImg = [UIImage imageNamed:strName];//@"main_background.png"    tiledImg = [tiledImg resizableImageWithCapInsets:UIEdgeInsetsMake(tiledImg.size.height/2, tiledImg.size.width/2,  tiledImg.size.height/2 + 1,  tiledImg.size.width/2 +2)];    [tiledImg drawInRect:mRect];    UIImage *imgTmp = UIGraphicsGetImageFromCurrentImageContext();    UIGraphicsEndImageContext();//    CGContextDrawTiledImage(ctx, mRect,  imgTmp.CGImage);//(CGRect){ CGPointZero, tiledImg.size}    // or    [imgTmp drawAsPatternInRect:mRect];}

这是拉伸图片 所封装的代码,其实就是先画一个所需大小的图片,再绘制。需要注意的是tiledImg对象调用完resizable...函数后,返回一个UIImage对象,切记再赋给tiledImg对象,今天就因为没有赋值,没出现预期结果,迷茫了好一阵子。。。