图片拉伸(聊天气泡)

图片拉伸(聊天气泡)

图片受保护区域的图片拉伸,分别以代码跟Assets两种方式。


代码方式如下几种方式:

  • 第一种返回一个调整好的图片,参数capInsets设置一个受保护的区域。受保护区域一般会以图片的大小为参数,设置可变区域为图片的中心11中心为可变区域。UIEdgeInsetsMake(iamgeHeight0.5, imageWidth0.5,iamgeHeight0.5 - 1 , imageWidth*0.5-1)
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets
  • 第二种方式可以设置模型
 UIImageResizingModeTile = 0,
 //平铺
 UIImageResizingModeStretch = 1,
 //拉伸
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode
  • 第三种方式是系统帮你计算好的,传一个leftCapWidth左边受保护的区域, 右边的保护区域 = 图片的宽度 - leftCapWidth - 1;另一个topCapHeight上边的保护区域,下面的保护区域 = 图片的高度 - topCapHeight - 1
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight

如果项目中经常使用可以增加一个扩展类

#import 

NS_ASSUME_NONNULL_BEGIN

@interface UIImage (YZImage)

+(instancetype)reziableImageWithImageName:(NSString *)imageName;
@end

NS_ASSUME_NONNULL_END
#import "UIImage+YZImage.h"

@implementation UIImage (YZImage)

+(instancetype)reziableImageWithImageName:(NSString *)imageName{
    
    UIImage *image = [UIImage imageNamed:imageName];
    CGFloat imageWidth = image.size.width;
    CGFloat imageHeight = image.size.height;
    
    return [image stretchableImageWithLeftCapWidth:imageWidth*0.5 topCapHeight:imageHeight*0.5];
    
}

@end

非代码的方式:

  • Assets.xcasset->选中图片->slicing选中Horizontal and vertical下面就有区域可以选择,具体的原理同代码的相同

你可能感兴趣的:(图片拉伸(聊天气泡))