2017-01-16 18 views
1

Текущей настройки:Масштабирование шрифта на многострочное UIButton в зависимости от размера устройства

У меня есть многострочногоUIButton, который добавляется к его надтаблице (обычный UIView). Ширина кнопки составляет 90% от ее просмотра. Поэтому, когда изменяется размер его супервизора, ширина метки изменяется соответственно из-за ограничений Autolayout.

Далее, внутри метода viewDidLoad я сделал это:

//Line break mode and Font size (are set in Interface Builder 
    myButton.titleLabel?.adjustsFontSizeToFitWidth = true 
    myButton.titleLabel?.minimumScaleFactor = 15.0 
    myButton.titleLabel?.numberOfLines = 2 

Так что теперь, когда у меня есть длинный текст, на iPhone устройств я получаю что-то вроде этого: iPhone look

это именно то, что я хочу , Но, конечно, это выглядит по-разному на устройствах iPad. Например, это на IPad Pro 9.7" :.

iPad Pro look

И как это может быть увидеть, все выглядит маленьким и плохо

То, что я пробовал:

Я пытался установить максимальный размер шрифта (который будет использоваться на iPad-устройствах) в сочетании с minimumScaleFactore = 15.Так что я установил размер шрифта до 25, и теперь все выглядит более приемлемым как на iPad, так и на iPhone, но все же на iPhone-устройствах текст является бит больше, чем мне нужно из-за того, как работает минимумScaleFactor.

Каким будет этот способ?

Я больше в получении что-то вроде этого (чтобы получить подобный взгляд на всех устройствах IPad и iPhone):

desired iPad look

+0

Так в основном, я ищу способ для установки все это каким-то образом, в идеале через IB, или, если это невозможно, через код , но я стараюсь избегать установки шрифта на основе обнаруженного устройства программно. Я имею в виду ничего плохого с этим, но мне было интересно, есть ли что-то более элегантное. – Whirlwind

ответ

1

Вы можете использовать классы размера, чтобы указать шрифт на вашей кнопке/этикетке в IB. Просто нажмите на маленький + знак слева от шрифта собственности:

Just press the little + sign to the left of the font property

+0

Это выглядит многообещающе ... Как я этого не заметил :) – Whirlwind

+0

Это сработало отлично. Я буду награждать щедрость за этот ответ как можно скорее (я должен ждать еще 4 часа, из-за того, как работает система) – Whirlwind

1

К сожалению, вы не можете изменять шрифт для кнопки в интерфейсе строителя на основе размера класс; однако вы можете удалить все элементы управления на основе класса размера. Выберите инспектор атрибутов (Option + command + 4) с выбранной кнопкой. Прокрутите до конца, и вы увидите флажок для установки с крошечной кнопкой слева слева. Если вы нажмете «плюс», теперь вы можете добавить варианты классов размера, чтобы удалить этот элемент управления. В частности, удалите его для обычной регулярной высоты (который является iPad в не разделенном экране). Теперь сделайте вторую кнопку с вашими атрибутами iPad и установите ее ТОЛЬКО для обычной регулярной высоты. Теперь у вас есть две разные кнопки: 1) для iPad без разделенного экрана и один для всего остального, никакого кода не требуется. Вы можете установить их для вызова одного и того же IBAction. См. Это link for more.

+1

'К сожалению, вы не можете изменить шрифт для кнопки в построителе интерфейса на основе класса size': Это неверно. См. Мой ответ. –

+0

Джош, то, что вы предложили, также работает, поэтому у вас есть мой верхний план, но ответ Михая является более элегантным решением в этом случае. Тем не менее, ваше первое предложение, похоже, вводит в заблуждение, поэтому вы можете изменить свой ответ, чтобы быть более полезным для будущих читателей. – Whirlwind