Мы достигли того же в 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)
}
}
}