在UIButton中添加右视图

我试图在按钮上显示一些文本和图像。 我正在使用这里的代码

let btnSort = UIButton.buttonWithType(UIButtonType.System) as! UIButton btnSort.frame = CGRectMake(2, 74, 140, 26) btnSort.tintColor = UIColor.whiteColor() btnSort.setImage(UIImage(named:"immgg"), forState: UIControlState.Normal) btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14) btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34) btnSort.setTitle("SORT", forState: UIControlState.Normal) btnSort.layer.borderWidth = 1.0 btnSort.layer.borderColor = UIColor.whiteColor().CGColor btnSort.addTarget(self, action: Selector("showSortTbl"), forControlEvents: UIControlEvents.TouchUpInside) self.view.addSubview(btnSort) 

我可以在正确的位置看到图像,但文本没有出现。 我认为titleEdgeInsets不起作用。

我尝试的代码我得到了输出U面临的问题。

btnSort.backgroundColor = UIColor.redColor() – >设置背景颜色并检查

  let btnSort = UIButton(type: UIButtonType.System) as UIButton! //this is Swift2.0 in this place use your code btnSort.frame = CGRectMake(2, 74, 140, 40) btnSort.tintColor = UIColor.whiteColor() btnSort.setImage(UIImage(named:"youtube16x16.png"), forState: UIControlState.Normal) btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14) btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34) btnSort.setTitle("SORT", forState: UIControlState.Normal) btnSort.layer.borderWidth = 1.0 btnSort.backgroundColor = UIColor.redColor() --> set the background color and check btnSort.layer.borderColor = UIColor.whiteColor().CGColor btnSort.addTarget(self, action: Selector("showSortTbl"), forControlEvents: UIControlEvents.TouchUpInside) self.view.addSubview(btnSort) 

Swift3

  let btnSort = UIButton(type: .system) btnSort.frame = CGRect(x: 2, y: 74, width: 140, height: 40) btnSort.tintColor = UIColor.white btnSort.setImage(UIImage(named:"youtube16x16.png"), for: .normal) btnSort.imageEdgeInsets = UIEdgeInsets(top: 6,left: 100,bottom: 6,right: 14) btnSort.titleEdgeInsets = UIEdgeInsets(top: 0,left: -30,bottom: 0,right: 34) btnSort.setTitle("SORT", for: .normal) btnSort.layer.borderWidth = 1.0 btnSort.backgroundColor = UIColor.red //--> set the background color and check btnSort.layer.borderColor = UIColor.white.cgColor btnSort.addTarget(self, action: #selector(ViewController.showSortTbl), for: UIControlEvents.touchUpInside) self.view.addSubview(btnSort) 

并将操作处理为

  func showSortTbl() { // do your stuff here } 

产量

在此处输入图像描述

子类UIButton

覆盖layoutSubviews()函数

 class CustomButton: UIButton { override func layoutSubviews() { super.layoutSubviews() guard imageView != nil else { return } imageEdgeInsets = UIEdgeInsets(top: 5, left: (bounds.width - 25), bottom: 5, right: 5) titleEdgeInsets = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: imageView!.frame.width) } } 
  • 在Storyboard中添加一个按钮
  • 将自定义类添加到按钮
  • 将按钮类型更改为System
  • 将标题和图像设置为按钮

请检查以下代码。

希望它对你有用。

 let teamImage: UIButton = UIButton(frame: CGRect(x: 0, y: 75, width: 100, height: 50)) let imageTest = UIImage(named: "immgg") teamImage.setTitle("HypnotoadTitle", forState: .Normal) teamImage.setBackgroundImage(imageTest, forState: .Normal) self.view.addSubview(teamImage) 

仅设置背景颜色并显示您的文字:

 let btnSort = UIButton(type: UIButtonType.System) as UIButton // Shift 2.0 btnSort.backgroundColor = UIColor.yellowColor() 

要么

 btnSort.setTitleColor(UIColor.greenColor(), forState: UIControlState.Normal) 
Interesting Posts