2015-03-16 4 views
1

У меня есть универсальное приложение, в котором я использовал панель рассказов, чтобы ограничить кнопку, так что с iPhone 4 до iPhone 6plus размер будет хорошо пропорционален экрану устройства. Название кнопки - это номер «2» (Все, что отображается на экране, - это номер «2», который можно нажать). По какой-то причине я не могу понять, как автоматически изменить размер шрифта с размером кнопки, чтобы число выглядело пропорционально экрану, как и предполагалось. Идеи?Автоматическое изменение размера текста внутри кнопки с ограничениями на раскадровке

ответ

4
  1. Используйте только Interface Builder. Вы можете добавить UILabel как тот же размер, что и ваша кнопка. Удалите заголовок своей кнопки. Установите текст для UILabel. Затем измените свойство AutoShrink UILabel на «Минимальный масштаб шрифта». Но вы не сможете изменить цвет текста для разных состояний.

  2. Использовать код в соответствии с шириной. Попробуйте следующее:

    self.yourButton.titleLabel.adjustsFontSizeToFitWidth = YES; 
    self.yourButton.titleLabel.minimumScaleFactor = 0.5; 
    
  3. Если вы хотите соответствовать высоте названия. Возможно, вы должны сами рассчитать высоту. Используйте [font lineHeight], чтобы шрифт соответствовал вашей кнопке.

0

Вызов этой функции (например, из viewDidAppear) для каждой кнопки в вашем приложении:

func setAppropriateFontSize(butt:UIButton){ 
    let maxFontSize = butt.frame.height 
    butt.titleLabel!.font = UIFont(name: "Helvetica", maxFontSize) 
    butt.titleLabel!.adjustsFontSizeToFitWidth = true 
    butt.titleLabel!.minimumScaleFactor = 0.01 
} 

Выше maxFontSize максимальный размер шрифта, для которого текст по-прежнему помещается вертикально внутри кнопки. Этот шрифт, вероятно, слишком велик, и поэтому мы разрешаем его shrink (adjustsFontSizeToFitWidth = true означает, что мы разрешаем шрифт shrink, так как он никогда не будет увеличиваться в соответствии с шириной).

Смежные вопросы