2015-04-24 60 views
2

我試着換一個按鈕文本如下:如何包裝上的UIButton文本中迅速

nextButton=UIButton(frame: CGRectMake(buttonHWidth, textHeigth, buttonHWidth, buttonHeigth)); 

     nextButton.backgroundColor = UIColor.lightGrayColor() 
     nextButton.setTitle("", forState: UIControlState.Normal) 
     nextButton.addTarget(self, action: "buttonAction:", forControlEvents: UIControlEvents.TouchUpInside) 
     nextButton.tag = 22; 


     label_nextButton = UILabel(frame: CGRectMake(buttonHWidth, textHeigth, buttonHWidth, buttonHeigth)); 
     label_nextButton.textAlignment = NSTextAlignment.Center; 
     label_nextButton.numberOfLines = 2; 
     label_nextButton.font = UIFont.systemFontOfSize(16.0); 
     label_nextButton.text = "Prss next Press next"; 
     label_nextButton.textColor=UIColor.blackColor(); 

     nextButton.addSubview(label_nextButton); 
     self.view.addSubview(nextButton); 

我可以看到設備上的按鈕,但我沒有看到任何文字。

我在做什麼錯?或者這可以在沒有向按鈕添加標籤的情況下完成? 感謝您的幫助。

插圖。它看起來像:

enter image description here

只是在做當:

nextButton.setTitle("this is a very very long text", forState: UIControlState.Normal) 

回答

7

您需要在的setTitle方法寫入文本:

nextButton.setTitle("This is the very very long text!", forState: UIControlState.Normal) 

設置的行數和換模式標題標籤:

nextButton.titleLabel.numberOfLines = 0; // Dynamic number of lines 
nextButton.titleLabel.lineBreakMode = NSLineBreakByWordWrapping; 
+0

謝謝,但:這不包裹文本。像「這是一個非常非常長的文本」這樣的文本在我的情況下會縮短爲「這是一個v ... y長文本」。 –

+0

@ user1344545你在StoryBoard中使用AutoLayout嗎? –

+0

不,我喜歡在運行時用上面的代碼完成所有工作。 –

1

斯威夫特4

通過與替換文本中間縮短文本「...」你應該使用NSLineBreakMode.byWordWrapping:

nextButton.titleLabel?.lineBreakMode = NSLineBreakMode.byWordWrapping 

爲了縮短文本替換的結束文本以「......」你應該使用NSLineBreakMode.byTruncatingTail:

nextButton.titleLabel?.lineBreakMode = NSLineBreakMode.byTruncatingTail 

要查看可用的包裝模式的完整列表,請查看NSLineBreakMode文檔:https://developer.apple.com/documentation/appkit/nslinebreakmode