一、前言

  • 不像 Flutter / swiftUI 那样,UIimageView 并没有现成的
  • 这里介绍两种为 UIImageView 内图片设置边距的方法均为自定义方法

二、方案

  • 包括两种方案
  • 第一种:借鉴 stackoverflow 上大佬提出的
  • 第二种:我自己优化的

2.1 设置 UIImage 大小

  • 先设置 UIImage 的大小,再将其放入 UIImageView
  • 设置 contentModecenter 居中便可有 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.heightUIGraphicsBeginImageContextWithOptions(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

2.2 方案一使用

  • 在设置 UIImageView.image 是调用即可
xxxUIImageView.image = imageWithImage(image: UIImage(named: "six")!, scaledToSize: CGSize(width: 18, height: 18))
xxxUIImageView.contentMode = .center

2.3 对 UIImageView 类新增拓展方法

  • 该方法是对 stackoverflow 方案的改良版,不需要提前给定图片大小
  • 通过设置内边距的大小,就可以自动适应、调整
  • 设置上更为方便,同时能自动兼容各种图像
extension UIImageView {/// 使用前请先设置 UIImageView.contentMode = .centerfunc padding(_ all: CGFloat) {guard let image = self.image else {print("this image is nil when padding")return}let originSize = self.frame.sizevar scaledToSize: CGSize = .zeroif image.size.width > image.size.height {let radio = image.size.height / image.size.widthscaledToSize = CGSize(width: originSize.width - all * 2, height: (originSize.height - all * 2) * radio)} else {let radio = image.size.width / image.size.heightscaledToSize = 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}}

这个方法我没有经过系统的测试,如果有问题欢迎在评论区给我留言改进

UIImageView 使用 padding 为图片设置内边距的 2 种方案相关推荐

  1. 行内元素设置内边距和外边距的问题

    试图给行内元素设置内边距的时候出现了点问题,给块级元素设置内外边距都有明显的效果,那么给行内元素设置内外边距是否有效果呢. 一.行内元素设置内边距 1.代码展示 <style>*{marg ...

  2. css 设置下边距,css如何设置内边距

    在css中,可以使用padding属性设置内边距,只需要给元素设置"padding:数值+单位|百分比数值"即可.padding属性设置元素所有内边距的宽度,或者设置各边上内边距的 ...

  3. echarts 设置 内边距

    echarts设置内边距:

  4. 微信小程序的swiper轮播图中的图片设置自适应高度的一种方法

    微信小程序的swiper轮播图中的图片设置自适应高度的一种方法 小程序中的轮播图很简单,但是唯一的缺陷就是 swiper 是固定的150px 高度(320px 宽度),这样如果传入的图片大于这个高度就 ...

  5. html padding如何设置内边距,内边距:padding - CSS | 绿叶学习网

    内边距padding,又常常被称为"补白",它指的是内容区到边框之间的那一部分.内边距都是在边框内部的. 一.padding局部样式 从CSS盒子模型中我们可以看出,内边距分为4个 ...

  6. java button属性设置_java的JButton怎样设置内边距

    import java.io.IOException; public class SetTime { public static void main(String args[]){ String os ...

  7. 防抖与节流方案_关于图片懒加载的几种方案

    作者: 山月行 转发链接:https://mp.weixin.qq.com/s/rY1LbW95LR6AqF1Vcx_d1Q 懒加载,顾名思义,在当前网页,滑动页面到能看到图片的时候再加载图片 故问题 ...

  8. 内边距(padding)

    内边距(padding) 指的是内容至边框的距离. padding属性用于设置内边距,是指边框与内容之间的距离 padding-top: 上内边距 padding-right: 右内边距 paddin ...

  9. 七天学会h5和css3之盒子模型内边距和外边距(27)

    先来练习一个题目:做一个新浪体育文本页面.,可能你现在并不能很好的做出这个效果,但是学习了本节后,你将很快的做出这个页面,具体代码和效果如下: <!DOCTYPE html PUBLIC &qu ...

最新文章

  1. 替换 RHEL5的yum源为CentOS5源,亲测线上系统可用
  2. python值得报班学习吗
  3. 在RecyclerView的子布局中使用EditText在数据滚动后消失
  4. notifyDataSetInvalidated()跟notifyDataSetChanged()的区别
  5. python php linux-怎么在linux上运行python
  6. JDK8 HashMap--removeNode()移除节点方法
  7. 互联网1分钟 | 1015
  8. php pathseparator,在PHP拥有与命名空间和通过set_include_path()的一个问题
  9. 使用ZooKeeper ACL特性进行znode控制
  10. C++数据类型之结构体的练习(用到结构体的赋值,利用结构体元素排序以及查找)
  11. 互联网网站采集工具大比拼和选择指南
  12. iphone快捷指令一键重启_iOS捷径一键重启教程 苹果手机一键重启方法
  13. HTML5期末大作业:电影网站设计——电影泰坦尼克号(4页) HTML+CSS+JavaScript 学生HTML个人网页作业作品下载 个人网页设计制作 大学生个人网站作业模板 简单个人网页制作
  14. 【SandQuant 量化投资】哈里·马科维茨:投资组合的选择
  15. 《舞!舞!舞!》读后感
  16. android studio 闪电编译,Android Studio中Instant Run
  17. SSL证书一年需要多少钱
  18. 2022电赛声源定位(基础篇)
  19. 驱动人生,FUCK YOU,有没有底线呀
  20. Mac的应用程序默认安装地址

热门文章

  1. BlackHat USA 2021 洞察(一):议题技术解读
  2. 非常棒的13款3DMax渲染器插件推荐给大家
  3. 一位优秀学长的面试经验
  4. 矛盾集合体——static的相关用法介绍
  5. 想进世界顶尖投行 那我该上什么样的学校?
  6. 一起来看流星雨剧情简介/剧情介绍/剧情分集介绍第二十集
  7. 制作一个小的彩票系统
  8. 2020,中国互联网的后高光时刻
  9. 为个人信息安全加“保险锁” 多家快递公司启用隐私面单
  10. CPU综合设计实验报告