在iOS中當(dāng)UI設(shè)計(jì)的圖片滿足不了現(xiàn)有需求的時(shí)候蜻直,比如聊天框幽污、按鈕背景在圖片大小達(dá)不到渲染大小的時(shí)候吁津,這個(gè)時(shí)候就需要你對(duì)圖片進(jìn)行拉伸處理了凭舶。
chat.png
buttongreen.png
上面兩個(gè)圖片尺寸分別為64x56 和 193x81。如下代碼:
UIImageView *imageV = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"chat"]];
imageV.frame = CGRectMake(100, 100, 300, 200);
[self.view addSubview:imageV];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 400, 200, 200);
[button setBackgroundImage:[UIImage imageNamed:@"buttongreen"] forState:UIControlStateNormal];
[self.view addSubview:button];
對(duì)圖片和按鈕分別不根據(jù)圖片的尺寸和比例進(jìn)行設(shè)置 渲染結(jié)果:
渲染結(jié)果.png
chat圖片嚴(yán)重失真帝美,buttongreem圖片在按鈕渲染上也會(huì)失真碍彭;
對(duì)圖片拉伸
UIImage *image = [UIImage imageNamed:@"chat"];
CGFloat imageW = image.size.width;
CGFloat imageH = image.size.height;
///分別對(duì)圖片的 top left bottom right 進(jìn)行拉伸
UIImage *resizImage = [image resizableImageWithCapInsets:UIEdgeInsetsMake(imageH/2, imageW/2,imageH/2, imageW/2)];
UIImageView *imageV = [[UIImageView alloc] initWithImage:resizImage];
imageV.frame = CGRectMake(100, 100, 300, 200);
[self.view addSubview:imageV];
UIImage *bimage = [UIImage imageNamed:@"buttongreen"];
///分別對(duì)圖片的 水平 和 垂直 20像素進(jìn)行拉伸
UIImage *resizBImage = [bimage stretchableImageWithLeftCapWidth:20 topCapHeight:20];
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(100, 400, 200, 200);
[button setBackgroundImage:resizBImage forState:UIControlStateNormal];
[self.view addSubview:button];
渲染結(jié)果:
拉伸結(jié)果
demo已上傳GitHub https://github.com/ShawnWang1/ImageResizing.git