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

今天在解决一个问题,已知我有一个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对象,今天就因为没有赋值,没出现预期结果,迷茫了好一阵子。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值