第六章 图片处理
图片拉伸
例如在做聊天的时候,聊天的长度长短不一样,这时候我们就需要将美工做的一个图片进行不同程度的拉伸,来保证我们图片的美观
1.第一种拉伸方法
UIImageView * imageView = [[UIImageView alloc] init]; imageView.frame = CGRectMake(50, 100, 200, 100); [self.view addSubview:imageView]; UIImage * image = [UIImage imageNamed:@"chat_send_nor"]; image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(30, 20, 20, 30) resizingMode:UIImageResizingModeTile]; imageView.image = image;
resizableImageWithCapInsets:UIEdgeInsetsMake(30, 20, 20, 30) resizingMode:UIImageResizingModeTile
这句代码就是拉伸的核心代码,第一个参数代表我们拉伸图片的时候需要保护的位置,设置需要保护的位置之后,在进行拉伸的时候保护的位置就不会进行拉伸。第二个参数是代表拉伸的一个模式,有两种方式,一种是平铺,是我们目前设置的,也是默认的,一种格式拉伸。
- 2.第二种拉伸方法
image = [image stretchableImageWithLeftCapWidth:image.size.width * 0.5 topCapHeight:image.size.height * 0.5];
这是一种比较老的方法,只需要传入需要保护的左边和上边,苹果会自动计算拉伸的区域,拉伸的区域为 1X1的像素位置大小
- 3.第三种拉伸方法,直接带照片管理中心设置
图片拉伸之后,设置title可能会出现文字超出设置的背景图片,这时候我们需要设置他的contentEdgeInsets来设置button的内边距
设置聊天工具栏,笑脸,语音,textField等
- 1.设置textField的时候,默认显示的光标贴在左边。这时候我们需要设置光标右移。textField有一个属性,leftView属性。
UIView * view = [[UIView alloc] init];
view.frame = CGRectMake(0, 0, 5, 0);
view.backgroundColor = [UIColor clearColor];
self.chatTextField.leftView = view;
// 这个属性是为了显示设置的leftView,默认是不显示
self.chatTextField.leftViewMode = UITextFieldViewModeAlways;
图片类
图片裁剪
// CGImageRef:需要裁剪的图片
// rect:需要裁剪的区域
// 裁剪图片是以像素为基准,rect参数是点参数
CGImageCreateWithImageInRect(CGImageRef _Nullable image, CGRect rect)
- 使用
// 裁剪图片
CGImageRef imageR = CGImageCreateWithImageInRect(backImage.image, CGRectMake(0, 0, 10, 10));
// 将图片转成UIImage
UIImage * image = [UIImage imageWithCGImage:imageR];
获取当前屏幕比例
// 表示当前像素和点的比例,现在基本都是@2x,所以结果就是2
CGFloat scale = [UIScreen mainScreen].scale;