我正在繼承UILabel
和UITextField
,以便在3.5英寸設備上更改字體大小(因爲這不能使用大小類別獨立於4和4.7英寸設備)。替代3.5英寸iOS設備的字體大小
如果在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'的子類...有沒有你知道的任何函數只有在我可以這樣做時才被調用? –
是的,你嘗試覆蓋初始化?,也可以使用willMoveToSuperview(newSuperview:UIView?) – Knight0fDragon