有的时候美工给的一些图片太小并不符合我们的要求,出现拉伸问题,但是,如果再要一张大一些的图片,图片大,导致安装包也大,加载到内存的时候内存增大。
再举个例子,我们熟知的微信、QQ聊天的气泡,由于每次对话的文字数量不同,也需要对背景图片进行拉伸。
运行之后发现图片被拉伸的如下图所示:
仔细查看图片发现,好像只是边缘部分被拉伸了,中间的部分拉伸的并不明显。因此要想小图片被拉伸后不会变的难看,在图片拉伸的时候,我们不要拉伸边缘部分,只需拉伸中间的一块矩形区域即可。
iOS中,UIImage提供了两个方法处理图片拉伸问题
1>iOS 5.0之后,
- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsetsNS_AVAILABLE_IOS(5_0);//
create a resizable version of this image. the interior is tiled when drawn.
2>iOS 6.0之后,
- (UIImage*)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
resizingMode:(UIImageResizingMode)resizingModeNS_AVAILABLE_IOS(6_0);//
the interior is resized according to the resizingMode
UIImageResizingMode:通过重复显示UIEdgeInsets指定的矩形来填充图片
UIImageResizingModeTile, // 平铺模式,
UIImageResizingModeStretch, // 拉伸模式
使用方法:
CGFloattop =
10;
CGFloatbottom =
10;
CGFloatleft =
25;
CGFloatright =
25;
UIEdgeInsetsinsets =
UIEdgeInsetsMake(top, bottom, left, right);
UIImageView*imgView = [[UIImageViewalloc]initWithFrame:CGRectMake(60,100,200,50)];
imgView.backgroundColor=
[UIColorwhiteColor];
[self.viewaddSubview:imgView];
UIImage*img = [UIImageimageNamed:@"默认按钮灰"];
1>
img = [imgresizableImageWithCapInsets:insets];
2>
img = [imgresizableImageWithCapInsets:insetsresizingMode:UIImageResizingModeStretch];
imgView.image= img;
运行效果
图片原本的大小是20*20的
9万+

被折叠的 条评论
为什么被折叠?



