I am trying to display some text and an image over a button. I am using the code from here
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)
I can see the image at the right place, however the text is not appearing. I think titleEdgeInsets
is not working.
Subclass UIButton
Override the layoutSubviews()
function
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)
}
}
the code I tried I got the output what the problem U faced.
btnSort.backgroundColor = UIColor.redColor()
--> set the background color and check
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)
and handle the action as
func showSortTbl() {
// do your stuff here
}
output
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With