Масштабировать текстовую метку по размеру экрана

Есть ли способ масштабирования текста, чтобы он занимал близко к той же самой недвижимости на экране, независимо от размера устройства? Я обнаружил, что текст на iPad-устройстве слишком мал по сравнению с размером экрана по сравнению с iPhone. Ниже приведен пример того, что я ищу. Обратите внимание, что размер процента текста аналогичен размеру экрана устройства.

Пример

enter image description hereenter image description here

Ответы

Ответ 1

Чтобы установить ограничения на метку, которая у вас есть, см. эту ссылку: Как сделать масштаб фонового изображения для размера экрана в быстром?. Я знаю, что вы не можете использовать Swift (я использую Objective-C), но первый ответ показывает, как это сделать в раскадровке. Сделайте то же самое, что и сказано, но для этикетки. Затем см. Изображение ниже, чтобы изменить параметры автоматической усадки для метки с "Фиксированный размер шрифта" на "Минимальный масштаб шрифта" (см. Рисунок ниже). Надеюсь, это поможет!

Changing Font Size

Ответ 2

У меня было собственное исправление, и это не один щелчок, но я счел это достойным этого.

Шаг 1:

Проверьте некоторые размеры шрифтов для различных размеров экрана, записи размера шрифта и наиболее релевантную другое измерение.

Вот что я имею в виду...

Я бы начал с обычного экрана iPad и выбрал размер шрифта, который работал.

enter image description here

Поскольку я знал, что вся высота экрана определит, что делает размер шрифта удобным или нет, я бы записал размер шрифта вместе со всей высотой экрана.

enter image description here

Таким образом, размер шрифта был 50 с высотой 1024.

Затем я переключился на iPhone SE

enter image description here enter image description here

Это было довольно ужасно, поэтому я исправил размер шрифта:

enter image description here

После записи, что размер шрифта работал на 25 с высотой 568.

Шаг 2:

Выложите приложение калькулятора и найдите константу, которая связывает размеры шрифта с высотами (в моем случае), давая или принимая немного.

Вот что я имею в виду:

Я знал 50 работ с 1024 и что 25 работает с 568.

Разделение 50/1024 дает вам.048828125.

Умножение на 568 равно 27.734375, что будет немного жира размера шрифта для SE.

Повторяя этот процесс, но используя значения SE для выполнения деления, произведенного.0440140845, и проверяя, что с высотой iPad составляет размер шрифта 45, он немного мал для мощного экрана iPad.

Таким образом, я разделил коэффициенты вниз по середине, в результате число около 0,46.

Шаг 3:

Подключайте эти метки и изменяйте их размер шрифта программно, используя этот номер.

Сначала перетащите ярлыки в коллекцию розетки. Я назвал мое соединение "headerLabels", так как все они находятся в верхней части экрана.

enter image description here

Затем вы можете украсть мой код, но просто не делайте с ним слишком много денег;)

// Outlet collection of labels
@IBOutlet var headerLabels: [UILabel]!

// Who needs a short variable name when we can have a 
// painfully lengthy one to describe the number we calculated?
let relativeFontConstant:CGFloat = 0.046

override func viewDidLoad() {
    super.viewDidLoad()

    // Should be in the viewDidLoad so it can load the same time as
    // the view does.

    // apply a font size to all the labels.
    for label in headerLabels {
        // multiply the height we based it on of the entire view 
        // to the number we calculated
        label.font = label.font.withSize(self.view.frame.height * relativeFontConstant)
    }
}

Если у вас есть вопросы, комментарии, комплименты или оскорбления, дайте мне знать :)

Ответ 3

У меня была одна и та же проблема, когда мне нужно, чтобы текст масштабировался пропорционально вместе с увеличением размера экрана.

Адаптивная калибровка довольно ограничена, так как вы можете установить размер шрифта для классов размеров. Имея размеры шрифта для двух вариантов ширины, компактный и регулярный не был для меня решением.

Я написал небольшую библиотеку, которая обрабатывает автоматическое масштабирование шрифтов для UILabel и UITextView для разных размеров экрана.

Вы можете установить масштабирование глобально или для определенного экземпляра UILabel и UITextView.

Найдите его здесь: AMXFontAutoScale

Ответ 4

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

Как упомянул @VatsalManot, изучите адаптивные размеры для начинающих. Вот хорошая ссылка:

http://www.raywenderlich.com/83276/beginning-adaptive-layout-tutorial

Надеюсь это поможет! :)

Ответ 5

1. Выберите свой ярлык и откройте для него инспектор атрибутов Select the UI (button, label etc)

2. Щелкните по значку + по шрифту, выберите ширину и высоту как "Обычный", нажмите "Добавить изменение" click on + icon on side of font, select width and height regular

3. Появится другое поле Font, это будет представлять шрифт для ipad/большой экран/иллюзию большого экрана (просмотр прокрутки)

another font field will appear, this is for big screen (ipad or illusion of big screen by scroll view etc)

4. Выберите нужный шрифт для ipad

select the desired size and font you want to show on ipad

Ответ 6

Я имел приличное поведение со следующим кодом в моей функции viewDidLoad:

(Обратите внимание, что границы экрана указаны в "точках", а не в "пикселях")

    // Set the clock font size according to the height.
    //  Design was done on iPhone XR with height of 896 points and font size of 98.
    if (UIScreen.main.bounds.height != 896). // Only need code if not on original design size.
    {
        let scaleFactor: Float = Float(UIScreen.main.bounds.height) / 896.0
        let fontSize = CGFloat(98.0 * scaleFactor)
        self.clock.font = self.clock.font.withSize(fontSize)
    }

При этом использовался шрифт Helvetica Neue, который является шрифтом фиксированной ширины. По некоторым причинам он не был полностью масштабирован полностью на более крупных устройствах, поэтому все еще немного меньше, чем цель на iPad, но достаточно близко.

Ответ 7

разные размеры экрана в соответствии с

// iphone 5s,SE screen width 320
// iphone 6,6s,7,etc width 375
// iphone 7 plus, 8 plus, xs max,etc width 414
if (self.view.frame.width == 320) {

    label.font = UIFont(name: label.font.fontName, size: 16)

} else if (self.view.frame.width == 375) {

    label.font = UIFont(name: label.font.fontName, size: 21)

} else if (self.view.frame.width == 414) {

    label.font = UIFont(name: label.font.fontName, size: 24)

}