2017-09-27 68 views
0

我需要一个带有图像内部图像和按钮下的文本的按钮。我无法将图像用作背景,因为它会拉伸图像。所以我的问题是如果我使用按钮的图像,标题将被图像覆盖。有没有解决方案?带标题和图像的UIButton

这里有一个例子应该怎么看起来像在最后:

enter image description here

+1

是的,你可以通过调整标题和图像插入来实现。 – Vishnuvardhan

回答

0

你可以做你喜欢的位置独立的UIImage和的UILabel,并用透明的UIButton覆盖。 这应该做的伎俩。

希望它有帮助。

0

你有两个选择

1)创建的UIView添加图片,标签和按钮

2)您可以设置标题和图像插入,你可以在厦门国际银行做很容易

对于选项两个I增加了简单的例子,(您的值替换它)

enter image description here

enter image description here

0

可以继承的UIButton并重新定义layoutSubviews方法。

0

您可以调整UIButton的以下属性:var titleEdgeInsets: UIEdgeInsets,var imageEdgeInsets: UIEdgeInsets

这样做的另一种方法是子类UIControl。这是一个UIView子类,意在用于这种情况。例如,UIButtonUIControl的子类。这样你就可以更好地控制布局,而且你不需要与UIButton的内置行为作斗争。

您可以在代码中或使用Interface Builder在xib文件中执行布局。

class MyButton: UIControl { 

    var imageView: UIImageView 
    var label: UILabel 

    // adjust colors for changed states like highlighting, etc. 
    override var isHighlighted: Bool { 
     didSet { 
      if isHighlighted { 
       backgroundColor = UIColor.grey    
      } else { 
       backgroundColor = UIColor.white    
      } 
     } 
    } 

    override var isSelected: Bool { didSet { ... } }  
    override var isEnabled: Bool { didSet { ... } } 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     commonInit() 
    } 

    override init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     commonInit() 
    } 

    func commonInit() { 
     imageView = UIImageView(image: UIImage(...)) 
     addSubView(imageView) 
     label = UILabel(frame: CGRect(...))  
     addSubView(label) 
     // TODO: add constraints for layout 
    } 
}