边帽拉伸常用方法

第一种、stretchableImageWithLeftCapWidth: topCapHeight:函数是UIImage的一个实例函数,它可以创建一个内容可拉伸,而边角不拉伸的图片,这需要两个参数来实现这个功能,第一个参数是左边不拉伸区域的宽度,第二个参数是上面不拉伸的高度。
例如:30是左边距的大小,10是上边距的大小(也可以理解为像素大小)
- (UIImage *)getButtonNormalBgImage {
UIImage *newImage = [[UIImage imageNamed:@"btn_normal.png"] stretchableImageWithLeftCapWidth:30
topCapHeight:10];
return newImage;
}
其中,可拉伸的范围都是距离leftCapWidth后的1竖排像素,和距离topCapHeight后的1横排像素。这里参数的意义是,图片左边距30个像素和上边距10个像素范围内不会被拉伸,而左边距第31个像素会被横向复制,上边距的第11个像素会被纵向复制。复制是根据控件本身的大小对这一个像素进行复制到一定宽度,而图片左边距31像素后面以及上边距11像素后的剩余像素也不会被拉伸。

第二种、resizableImageWithCapInsets: resizingMode: 函数也是UIImage的一个实力函数,它也可以实现图片不变形功能。第一个参数是UIEdgeInsets内边距的距离,第二个参数是个枚举类型UIImageResizingMode

typedef NS_ENUM(NSInteger, UIImageResizingMode) {
    UIImageResizingModeTile,//拉伸模式,通过拉伸UIEdgeInsets指定的矩形区域来填充图片
      UIImageResizingModeStretch,//平铺模式,通过重复显示UIEdgeInsets指定的矩形区域来填充图片
  };

具体的使用如下:
- (UIImage *)getButtonHighlightBgImage {
UIImage *newImage = [[UIImage imageNamed:@"btn_pressed.png"]
resizableImageWithCapInsets:UIEdgeInsetsMake(10.f, 30.f, 10.f, 30.f) resizingMode:
(UIImageResizingModeStretch)];
return newImage;
}

效果图:
设置UIButton背景图片,图片被严重拉伸变形


image.png

在代码中使用此方法设置UIButton背景图运行效果


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容