web-dev-qa-db-fra.com

Comment définir différentes tailles de police pour différents périphériques à l'aide de Xcode Storyboard?

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?

 Example is shown in the image where i was stuck.

8
jeetendra_coder

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:

 enter image description here

 enter image description here

Essaye ça:

 enter image description here

 enter image description here

Voici un aperçu (résultat) de la variation de la taille de la police, sur iPhone et iPad

 enter image description here

Mettre à jour

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)

}
11
Krunal

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 

2
Sh_Khan