Je souhaite définir différentes tailles de police pour iPhone 5, iPhone 6 Plus, iPhone 7 Plus et iPhone X à l'aide de Xcode Storyboard.
Quelqu'un peut-il offrir des conseils?
Utilisez Size-Class et ajoutez une variation de taille pour les polices à partir de Attribute Inspector
de la propriété Label.
Voici différentes variantes possibles, que vous pouvez définir avec la classe Size:
Essaye ça:
Voici un aperçu (résultat) de la variation de la taille de la police, sur iPhone et iPad
Le résultat que vous attendez peut ne pas être possible avec IB (Storyboard), mais vous pouvez l'essayer avec la solution programmatique suivante:
extension UIDevice {
enum DeviceType: String {
case iPhone4_4S = "iPhone 4 or iPhone 4S"
case iPhones_5_5s_5c_SE = "iPhone 5, iPhone 5s, iPhone 5c or iPhone SE"
case iPhones_6_6s_7_8 = "iPhone 6, iPhone 6S, iPhone 7 or iPhone 8"
case iPhones_6Plus_6sPlus_7Plus_8Plus = "iPhone 6 Plus, iPhone 6S Plus, iPhone 7 Plus or iPhone 8 Plus"
case iPhoneX = "iPhone X"
case unknown = "iPadOrUnknown"
}
var deviceType: DeviceType {
switch UIScreen.main.nativeBounds.height {
case 960:
return .iPhone4_4S
case 1136:
return .iPhones_5_5s_5c_SE
case 1334:
return .iPhones_6_6s_7_8
case 1920, 2208:
return .iPhones_6Plus_6sPlus_7Plus_8Plus
case 2436:
return .iPhoneX
default:
return .unknown
}
}
}
// Get device type (with help of above extension) and assign font size accordingly.
let label = UILabel()
let deviceType = UIDevice.current.deviceType
switch deviceType {
case .iPhone4_4S:
label.font = UIFont.systemFont(ofSize: 10)
case .iPhones_5_5s_5c_SE:
label.font = UIFont.systemFont(ofSize: 12)
case .iPhones_6_6s_7_8:
label.font = UIFont.systemFont(ofSize: 14)
case .iPhones_6Plus_6sPlus_7Plus_8Plus:
label.font = UIFont.systemFont(ofSize: 16)
case .iPhoneX:
label.font = UIFont.systemFont(ofSize: 18)
default:
print("iPad or Unkown device")
label.font = UIFont.systemFont(ofSize: 20)
}
Vous ne pouvez pas accomplir cela dans IB, vous pouvez détecter le périphérique actuel avec sa taille au moment de l'exécution et définir la police en conséquence. Si tous les éléments ont la même police, vous pouvez utiliser .appearnce pour définir une police globale.
Il n'y a pas de variation de police pour IPhone 6,7, X, il doit s'agir d'un code non IB