2015-10-09 17 views
10

Sto cercando di visualizzare del testo e un'immagine sopra un pulsante. Sto usando il codice hereaggiungi rightview in 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) 

posso vedere l'immagine al posto giusto, ma il testo non viene visualizzato. Penso che titleEdgeInsets non funzioni.

risposta

22

il codice che ho provato ho ottenuto l'output del problema riscontrato da U.

btnSort.backgroundColor = UIColor.redColor() -> impostare il colore di sfondo e verificare

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) 

e gestire l'azione come

func showSortTbl() { 
    // do your stuff here 

} 

uscita

enter image description here

+0

Seriamente, non so quale sia il problema, tuttavia non lo sto ancora ottenendo. Ho controllato con redcolor. Ha un problema perché sto usando 1.2 rapido? – Saty

+0

@Saty - Ho appena aggiunto il backgroundcolor del tuo pulsante e ho verificato anche la risposta, ho provato la risposta aggiornata –

+0

Quando rimuovo l'immagine, vedo il testo, sto usando UIButton.buttonWithType (UIButtonType.System) come! UIButton come sto usando 1.2 rapido. Penso che questo stia causando il problema – Saty

0

impostare solo colore di sfondo e visualizzare il testo:

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

btnSort.backgroundColor = UIColor.yellowColor() 

O

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

controlli prego sotto il codice.

Spero che funzioni per voi.

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)