Установить шрифт по умолчанию для всего приложения iOS? - PullRequest
145 голосов
/ 03 января 2012

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

Есть ли способ установить шрифт по умолчанию (надписи по умолчанию используют SystemFont) длявсе приложение?

Ответы [ 16 ]

3 голосов
/ 25 июня 2014

Ни одно из этих решений не работает универсально во всем приложении.Одна вещь, которую я нашел, чтобы помочь управлять шрифтами в Xcode, - это открыть раскадровку как исходный код (раскадровка по нажатию клавиши «Control» в «Навигаторе файлов»> «Открыть как»> «Источник»), а затем выполнить поиск и замену.

2 голосов
/ 03 января 2012

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

1 голос
/ 30 января 2018

Использую как этот тип шрифта в Swift.Использование класса расширения шрифта.

enum FontName: String {

  case regular      = "Roboto-Regular"

}

//MARK: - Set Font Size
enum FontSize: CGFloat {
    case size = 10

}
extension UIFont {

    //MARK: - Bold Font
  class var regularFont10: UIFont {
        return UIFont(name: FontName.regular.rawValue, size:FontSize.size.rawValue )!
    }
}
1 голос
/ 27 ноября 2012

NUI является альтернативой прокси-серверу UIAppearance.Он дает вам контроль над шрифтом (и многими другими атрибутами) большого количества типов элементов пользовательского интерфейса в вашем приложении, просто изменяя таблицу стилей, которую можно повторно использовать в нескольких приложениях.

После добавления NUILabel класс для ваших меток, вы можете легко контролировать их шрифт в таблице стилей:

LabelFontName    String    Helvetica

Если у вас есть метки с разными размерами шрифта, вы можете контролировать их размеры, используя классы NUI Label, LargeLabel и SmallLabel,или даже быстро создавать свои собственные классы.

0 голосов
/ 19 сентября 2018

Для Xamarin.iOS внутри AppDelegate FinishedLaunching() введите код, подобный следующему: -

UILabel.Appearance.Font= UIFont.FromName("Lato-Regular", 14);

установите шрифт для всего приложения и добавьте ключ 'UIAppFonts' в Info.plist, путь должен быть путем, где находится ваш файл шрифта .ttf. Для меня это было внутри папки 'fonts' в моем проекте.

<key>UIAppFonts</key>
    <array>
        <string>fonts/Lato-Regular.ttf</string>
    </array>
0 голосов
/ 30 января 2016

Мы достигли того же в Swift -Xcode 7.2, используя контроллер родительского вида и контроллер дочернего представления (наследование).

Файл - Новый - Класс Touch Cocoa - ParentViewController.

    import UIKit
    import Foundation

    class ParentViewController: UIViewController {

        var appUIColor:UIColor = UIColor.redColor()
        var appFont:UIFont = UIFont(name: "Copperplate", size: 20)!

        override func viewDidLoad() {
            super.viewDidLoad()
        }
        func addStatusBar()
        {
            let view = UIView(frame:
                CGRect(x: 0.0, y: 0.0, width: UIScreen.mainScreen().bounds.size.width, height: 20.0)
            )
            view.backgroundColor = appUIColor
            self.view.addSubview(view)
        }
    }    

Создайте дочерние контроллеры представления и свяжите их с StoryBoard VC, добавьте textLabel.

    import UIKit

    class FontTestController: ParentViewController {
        @IBOutlet var testLabel: UILabel!

        override func viewDidLoad() {
            super.viewDidLoad()
            testLabel.font =  appFont
            testLabel.textColor = appUIColor
        }

ИЛИ Создайте пользовательский класс UILabel (метод подклассификации) и свяжите с ним необходимые метки.

import Foundation
import UIKit

class CustomFontLabel: UILabel {
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)!
        backgroundColor = ParentViewController().appUIColor
        font = ParentViewController().appFont
        textColor = UIColor.blackColor()
    }
}

Примечание. Шрифт и цвет, объявленные в Parent VC, реализованы в CustomFontLabel.Преимущество в том, что мы можем изменить свойства uilabel / любого представления вместе в некоторых простых изменениях в Parent VC.

2) 'для' зацикливания UIView для вложенных представлений.Работает только на конкретном ВК.

    override func viewWillLayoutSubviews() {
            for view in self.view.subviews  {
                if view.isKindOfClass(UITextField) {
                UITextField.appearance().font =  UIFont(name: "Copperplate", size: 20)
                }
                if view.isKindOfClass(UILabel) {
                    UILabel.appearance().font =  UIFont(name: "Copperplate", size: 20)    
                }               
            }       
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...