Я подклассифицировал UILabel
и UITextField
, чтобы изменить размер шрифта только на 3,5-дюймовых устройствах (так как это невозможно сделать с использованием классов размеров независимо от устройств 4 и 4 дюйма).Переопределить размер шрифта для устройств iOS на 3,5 дюйма
Шрифт изменяется, если он сделан в layoutSubviews()
, но он неоднократно называется так, что размер шрифта заканчивается на ноль. Я пытаюсь найти другое место для его установки, которое вызывается только один раз и все еще может переопределить размер шрифта.
Код:
if (UIDevice.currentDevice().orientation == .Portrait) {
if (UIScreen.mainScreen().bounds.size.height < 568) {
self.font = UIFont(name: "Score Board", size: (self.font.pointSize - CGFloat(10.0)))
} else {
self.font = UIFont(name: "Score Board", size: self.font.pointSize)
}
} else {
if (UIScreen.mainScreen().bounds.size.width < 568) {
self.font = UIFont(name: "Score Board", size: (self.font.pointSize - CGFloat(10.0)))
} else {
self.font = UIFont(name: "Score Board", size: self.font.pointSize)
}
}
Я также попробовал в didMoveToSuperview()
и willMovetoSuperview()
, это было только раз, но это на самом деле не изменить шрифты. Я также пробовал его в init
, но опять же шрифт не установлен.
import Foundation
import UIKit
class CustomUILabel : UILabel {
override func didMoveToSuperview() {
super.didMoveToSuperview()
// Code from above
}
}
Проблема в том, что у вас есть этот код помещается в методе, который вызывается снова и снова, что-то подобное должно существовать только в нагрузке просмотра и сделал Методы изменения ориентации – Knight0fDragon
@ Knight0fDragon Я не думаю, что есть viewDidLoad, это подкласс 'UITextField' и' UILabel' ... есть ли какие-либо функции, о которых вы знаете, которые вызываются только однажды, когда я могу это сделать? –
да, вы попробовали переопределить init ?, также вы можете использовать willMoveToSuperview (newSuperview: UIView?) – Knight0fDragon