2016-05-17 44 views
1

我創建按鈕的編程方式是這樣的:斯威夫特按鈕需要有2線標題

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) 

我想要什麼來實現,並不能找出如何有按鈕的稱號2行,如果按鈕的寬度變得太大(例如超過屏幕寬度的一半)。

我在這個主題上發現了一些問題,但他們都假設他們知道按鈕的標題,而在我的情況下它是動態的,我不知道它可能是什麼。

我曾嘗試這個代碼,但沒有改變:

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

有人能幫忙嗎?

回答

0

您可以使用 「\ n」 和NoOFLines 0

試試這個代碼

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

我不知道前面的按鈕的稱號,它來自服務器,我無法知道該在哪裏介紹\ n – asheyla

+0

在這種情況下,您必須通過服務器的數據動態計算UIButton的寬度,並保持numberOfLines = 0,否則您可以製作一個竅門,使用帶有textView/label交互功能的UIView,並在其上添加false和button按鈕然後a s每個服務器數據你必須爲UIView設置框架,也使UtoView的cliptoBounds成爲true。 – Hasya

+0

您是否找到解決方案? – Hasya