ios-实现可拉伸的图片

来源:互联网 发布:深圳网络诈骗案 编辑:程序博客网 时间:2024/06/10 07:25
这里我们可以在项目中新建一个.m文件实现对UIImage类的扩展,其实就是给这个类添加新方法,但是不能用于成员变量。具体看代码。这个可以实现图片的平铺拉伸,而不是直接拉伸。
//UIImage+Extend.h 文件中#import <UIKit/UIKit.h>//返回一张可拉伸的图片 是对UIImage类的扩展@interface UIImage (Extend)+ (instancetype)resizedImageWithName:(NSString *)imageName;+ (instancetype)resizedImageWithName:(NSString *)imageName width:(CGFloat)width height:(CGFloat)height;@end
//UIImage的扩展类 .m文件中#import "UIImage+Extend.h"@implementation UIImage (Extend)+ (instancetype)resizedImageWithName:(NSString *)imageName{    return [self resizedImageWithName:imageName width:0.5 height:0.5];}+ (instancetype)resizedImageWithName:(NSString *)imageName width:(CGFloat)width height:(CGFloat)height{    UIImage *image = [UIImage imageNamed:imageName];    return [image stretchableImageWithLeftCapWidth:image.size.width * width                                      topCapHeight:image.size.height * height];    /*创建一个内容可拉伸,而边角不拉伸的图片,需要两个参数,第一个是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。那么接下来的一个像素会被拉伸。    例如,leftCapHeight为6,topCapHeight为8。那么,图片左边的6个像素,上边的8个像素。不会被拉伸,而左边的第7个像素,上边的第9个像素这一块区域将     会被拉伸。剩余的部分也不会被拉伸.如果参数指定10,5。那么,图片左边10个像素,上边5个像素。不会被拉伸,x坐标为11和一个像素会被横向复制,y坐标为6     的一个像素会被纵向复制。注意:只是对一个像素进行复制到一定宽度。而图像后面的剩余像素也不会被拉伸。个方法只有2个参数,leftCapWidth代表左端盖宽度,      */ }@end
topCapHeight代表上端盖高度。系统会自动计算出右端盖宽度rightCapWidth和底端盖高度bottomCapHeight,算法如下:
 系统会自动计算rightCapWidth
 rightCapWidth = image.width - leftCapWidth - 1;
 系统会自动计算bottomCapHeight
 bottomCapHeight = image.height - topCapHeight - 1 所以可拉伸的区域其实只有1*1。实际可拉伸的其实就是那个点而已你想拉伸多大给你无限的填充也就是说拉伸的就是你设定的left和top坐标的位置+1的那个点
原创粉丝点击