UIButton Swift上的多行标签

时间:2014-10-14 07:06:27

标签: xcode button swift label multiline

我一直试图让同步按钮显示Last Sync at (time&date)。但我得到的只是一行缩短文字。

// Sync Button

syncBtn.frame = CGRectMake(15, height-60, 120, 40)

syncBtn.addTarget(self, action: "syncBtnPressed", forControlEvents: UIControlEvents.TouchUpInside)

syncBtn.setTitle("Last Sync: Never", forState: UIControlState.Normal)

syncBtn.setTitleColor(UIColor.whiteColor(), forState: UIControlState.Normal)

syncBtn.layer.borderColor = UIColor.whiteColor().CGColor

syncBtn.layer.borderWidth = 1

syncBtn.layer.cornerRadius = 5

syncBtn.titleLabel?.font = UIFont(name: "Avenir", size: 10)

syncBtn.alpha = 0.5

syncBtn.titleLabel?.sizeToFit()

syncBtn.titleLabel?.textAlignment = NSTextAlignment.Center

syncBtn.titleLabel?.numberOfLines = 2

self.view.addSubview(syncBtn)

这是在标签上获取和设置日期的功能

func printTimestamp(){
    var timestamp = NSDateFormatter.localizedStringFromDate(NSDate(), dateStyle: .ShortStyle, timeStyle: .ShortStyle)
    self.syncBtn.titleLabel?.text = ("Last Sync at: " + timestamp)
}

任何人都能解决这个问题吗?

2 个答案:

答案 0 :(得分:4)

创建一个包含多行文本的UIButton

  

可能以编程方式

  override func viewDidAppear(animated: Bool){
    super.viewDidAppear(animated)
      btnTwoLine.setTitle("Mulitple line", forState:     UIControlState.Normal)
      btnTwoLine.titleLabel!.lineBreakMode = NSLineBreakMode.ByWordWrapping;

    }

答案 1 :(得分:2)

使用SetTitle方法而不是.text,当您使用.text时,它会设置标题文本,但约束不会相应更新,因此您需要使用SetTitle方法并将adjustsFontSizeToFitWidth设置为true

self.syncBtn.setTitle(timeStamp, forState: UIControlState.Normal)
self.syncBtn.titleLabel?.adjustsFontSizeToFitWidth = true