如图我们想把这张图片拉大, 但保持圆角不变, 肯定不能直接把image放大, swift提供两个方法
let imageV = UIImageView(frame: CGRect(x: 50, y: 200, width: width, height: height))
var image = UIImage(named: "bg_discountcolor_active")
- image = image?.stretchableImage(withLeftCapWidth: 8, topCapHeight: 8)
这个方法保证图片从上面8, 左边8的像素点拉伸 - image = image?.resizableImage(withCapInsets: UIEdgeInsets(top: 8, left: 8, bottom: 8, right: 8), resizingMode: .stretch)
这个方法圈出一个四面间距都为8的区域, 拉伸的时候只有这块区域变大, 只有设置了值的那个方向的区域才会被保护起来
但是在实际使用的时候遇到的问题总是拉伸变形, 甚至会突出来一块, 查找原因
图片尺寸11454(@3x)
那么实际尺寸应该是3818, 所以拉伸的间距纵向不能超过9, 横向不能超过19, 考虑到保存圆角, 这里纵向值应该为9, 否则超过一半, 因为iOS的机制, 超出部分会向外扩张, 造成变形
比如: image = image?.stretchableImage(withLeftCapWidth: 20, topCapHeight: 20)
网友评论