Flutter / swiftUI 那样,UIimageView 并没有现成的UIImageView 内图片设置边距的方法均为自定义方法stackoverflow 上大佬提出的UIImage 的大小,再将其放入 UIImageView 内contentMode 为 center 居中便可有 padding 效果 func imageWithImage(image: UIImage, scaledToSize: CGSize) -> UIImage? {
//UIGraphicsBeginImageContext(newSize);
// In next line, pass 0.0 to use the current device's pixel scaling factor (and thus account for Retina resolution).
// Pass 1.0 to force exact pixel size.
let radio = image.size.width / image.size.height
UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0)
image.draw(in: CGRect(x: 0, y: 0, width: scaledToSize.width * radio, height: scaledToSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}原文链接:https://stackoverflow.com/questions/32304349/insets-to-uiimageview

UIImageView.image 是调用即可xxxUIImageView.image = imageWithImage(image: UIImage(named: "six")!, scaledToSize: CGSize(width: 18, height: 18))
xxxUIImageView.contentMode = .centerextension UIImageView {
/// 使用前请先设置 UIImageView.contentMode = .center
func padding(_ all: CGFloat) {
guard let image = self.image else {
print("this image is nil when padding")
return
}
let originSize = self.frame.size
var scaledToSize: CGSize = .zero
if image.size.width > image.size.height {
let radio = image.size.height / image.size.width
scaledToSize = CGSize(width: originSize.width - all * 2, height: (originSize.height - all * 2) * radio)
} else {
let radio = image.size.width / image.size.height
scaledToSize = CGSize(width: (originSize.width - all * 2) * radio, height: originSize.height - all * 2)
}
UIGraphicsBeginImageContextWithOptions(scaledToSize, false, 0.0)
image.draw(in: CGRect(x: 0, y: 0, width: scaledToSize.width, height: scaledToSize.height))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.image = newImage
}
}这个方法我没有经过系统的测试,如果有问题欢迎在评论区给我留言改进 ????
config 时直接设置UIImageView 会不断的变化,那么可以把 padding 移到 layoutSubviews 中调用,以便同步视图刷新config:实例化时
xxxUIImageView.contentMode = .center
xxxUIImageView.image = UIImage(named: "enter your picture name")
layoutSubviews:刷新 image
xxxUIImageView.padding(3)