Многострочная этикетка на UIButton Swift

Я пытался заставить кнопку синхронизации отображать 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)
}

Кто-нибудь сможет решить эту проблему?


person Tristan Beaton    schedule 14.10.2014    source источник


Ответы (2)


Используйте метод SetTitle вместо .text, когда вы используете .text, он устанавливает текст заголовка, но ограничения не обновляются соответствующим образом, поэтому вам нужно использовать метод SetTitle и установить для параметра adjustsFontSizeToFitWidth значение true

self.syncBtn.setTitle(timeStamp, forState: UIControlState.Normal)
self.syncBtn.titleLabel?.adjustsFontSizeToFitWidth = true
person Omkar Guhilot    schedule 14.10.2014
comment
ищите здесь мою проблему stackoverflow.com/questions/46723070/ - person dinesh sharma; 14.10.2017

создать UIButton с несколькими строками текста

Возможно программно

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

    }
person ViJay Avhad    schedule 16.10.2015
comment
пожалуйста, поищите здесь мой вопрос stackoverflow.com/questions/46723070/ - person dinesh sharma; 14.10.2017