2016-05-17 3 views
1

Ich bin Tasten programmatisch wie folgt zu erstellen:Swift-Taste muss erstellt programmatisch 2 Zeilen für den Titel haben

let stage: Stages = stagesObjectsArray[i] 
let button = UIButton(type: .Custom) as UIButton   
button.setTitle(stage.name, forState: .Normal) 
button.sizeToFit() 
button.frame.origin = buttonPosition 
let buttonIncrement = button.frame.size.width + padding.width 
buttonPosition.x = buttonPosition.x + buttonIncrement 
button.backgroundColor = UIColor.blackColor() 
button.titleLabel?.font = UIFont(name: "", size: widthOfScreen/3.2) 
button.setTitleColor(UIColor.darkGrayColor(), forState: UIControlState.Normal) 
button.tag = stage.id 
button.addTarget(self, action: #selector(GamesAllViewController.buttonPressedTopMenu(_:)), forControlEvents: .TouchUpInside) 
buttonView.addSubview(button) 

Was ich umsetzen will und kann nicht herausfinden, wie der Titel der Schaltfläche haben, ist auf 2 Zeilen, wenn die Breite der Schaltfläche zu groß wird (z. B. mehr als die Hälfte der Breite des Bildschirms).

Ich habe einige Fragen zu diesem Thema gefunden, aber alle gehen davon aus, dass sie den Titel der Schaltfläche kennen, während es in meinem Fall dynamisch ist und ich nicht weiß, was es sein könnte.

Ich habe diesen Code versucht, aber ohne Änderung:

button.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping 
button.titleLabel!.numberOfLines = 2 

Kann jemand helfen?

Antwort

0

Sie können "\ n" und NoOFLines auf 0

versuchen diesen Code

override func viewWillAppear(animated: Bool) { 
    super.viewWillAppear(true) 

    let button = UIButton(type: .Custom) as UIButton 
    button.setTitle("Line 1\nLine 2", forState: .Normal) 
    button.sizeToFit() 
    button.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping 
    button.titleLabel!.numberOfLines = 0 
    button.titleLabel!.textAlignment = NSTextAlignment.Center 
    button.frame = CGRectMake(20, 100, 280, 40) 
    button.titleLabel?.textColor = UIColor.redColor() 
    button.backgroundColor = UIColor.blackColor() 

    button.addTarget(self, action: "methodName:", forControlEvents: .TouchUpInside) 

    self.view.addSubview(button) 

} 

enter image description here

+0

Ich weiß nicht, den Titel der zuvor Taste verwenden, ist es vom Server kommt, Ich kann nicht wissen, wo ich einführen soll \ n – asheyla

+0

In diesem Fall müssen Sie die Breite von UIButton dynamisch durch Daten vom Server berechnen und numberOfLines = 0 behalten, ansonsten können Sie einen Trick machen, UIView mit falscher textView/label-Interaktion verwenden und eine Schaltfläche darauf klicken dann ein s pro Server-Daten müssen Sie Frame für UIView setzen, auch cliptoBounds für UIView wahr machen. – Hasya

+0

Haben Sie eine Lösung gefunden? – Hasya

Verwandte Themen