先搞清楚button里面的两个image属性:
Image:设置button的图片,会覆盖掉里面的文字
Background:设置button的背景图片,里面的文字依旧显示
设置button的image属性时,可以设置图片的contentMode。
let btn = UIButton() //或是storyboard上拉过来的button的outlet
//...
btn.setImage(UIImage(named: "xxx"), for: .normal) //一般状态时的图片
btn.setImage(UIImage(named: "xxx"), for: .highlighted) //按钮被touch之后的图片
btn.imageView?.contentMode = .scaleAspectFit
ps:Background的情况,此情况的话在iOS15时也可以设置,具体可参考我的基础版课程
btn.setBackgroundImage(UIImage(named: "xxx"), for: .normal)