1.默认center 模式 居中

 

 

btn.contentHorizontalAlignment = UIControl.ContentHorizontalAlignment.right

  

right 和 trailing效果一样

 

 ======= ======= ======= ======= ======= ======= ======= ======= =======

fill 

 

 

 ======= ======= ======= ======= ======= ======= ======= ======= =======

leading   和 left 效果一样

 if #available(iOS 11.0, *) {
            btn.contentHorizontalAlignment = UIControl.ContentHorizontalAlignment.leading
        } else {
            // Fallback on earlier versions
        }

  

 

 

2. 改变图片显示区域

 

//        deleteBtn.setEnLargeEdge(16, 16, 16, 16)
        deleteBtn.adjustsImageWhenHighlighted = false
        deleteBtn.setImage(R.image.famle_account_more(), for: .normal)
//        deleteBtn.image("famle_account_more")
        deleteBtn.addTarget(self, action: #selector(deleteAction), for: .touchUpInside)
        bgView.addSubview(deleteBtn)
        deleteBtn.imageEdgeInsets = UIEdgeInsets(top: 12, left: 12, bottom: 12, right: 12)//图片16*16
        deleteBtn.snp.makeConstraints { make in
            make.width.height.equalTo(40)
            make.right.equalTo(-16)
            make.centerY.equalTo(phoneLabel)
        }
如果居右显示
deleteBtn.imageEdgeInsets = UIEdgeInsets(top: 12, left: 24, bottom: 12, right: 0)//图片16*16
 

 

需求:Swift 写一个按钮,长93,宽26,图片在左边,图片宽高16,图片左边距12,和按钮的Y 居中显示,文字在图片右边显示,文字的左边距离图片右边的间隔为4,文字距离右边父view间距12,文字居中,字体大小12

      // 创建按钮
        let button = UIButton(type: .custom)
        button.frame = CGRect(x: 50, y: 100, width: 93, height: 26)
        button.backgroundColor = .systemBlue // 设置背景色
        
        // 设置按钮图片
        let image = UIImage(named: "your_image_name") // 替换为你的图片名
        button.setImage(image, for: .normal)
        
        // 设置图片的宽高为16,左边距12,Y居中
        button.imageEdgeInsets = UIEdgeInsets(top: 5, left: 12, bottom: 5, right: 4)
        
        // 设置按钮的标题
        button.setTitle("按钮文字", for: .normal)
        
        // 设置字体大小为12,文字居中
        button.titleLabel?.font = UIFont.systemFont(ofSize: 12)
        button.titleLabel?.textAlignment = .center
        
        // 设置标题的边距,右边距为12
        button.titleEdgeInsets = UIEdgeInsets(top: 0, left: 4, bottom: 0, right: 12)
        
        // 将按钮添加到视图中
        self.view.addSubview(button)

 

 imageEdgeInsets的right已经设置4, 为什么titleEdgeInsets的left还要设置4?

 

这是因为 imageEdgeInsetstitleEdgeInsets 控制的是图片和文字的布局,它们是相互独立的。具体来说:

 

  • imageEdgeInsets 主要影响图片的位置,在按钮内部调节图片的边距。
  • titleEdgeInsets 主要控制文字的位置,调节文字与按钮其他部分的间距。

 

所以,imageEdgeInsets.right = 4 只是控制了图片和按钮右侧的间距,而 titleEdgeInsets.left = 4 则保证文字与图片之间有一个 4 的间隔。

 

如果不设置 titleEdgeInsets.left = 4,文字可能会与图片太过贴近,导致视觉上的不美观。所以设置 titleEdgeInsets.left = 4 是为了确保文字不会紧贴着图片。

 

简而言之,两者是独立设置的,imageEdgeInsets 只影响图片,而 titleEdgeInsets 只影响文字的间距。

 

 

 ======= ======= ======= ======= ======= ======= ======= ======= =======

 

 ======= ======= ======= ======= ======= ======= ======= ======= =======

posted on 2019-09-05 11:31  懂事长qingzZ  阅读(1772)  评论(0)    收藏  举报