iOS
Dynamischer Typ
Suche…
Bemerkungen
// Content size category constants
UIContentSizeCategoryExtraSmall
UIContentSizeCategorySmall
UIContentSizeCategoryMedium
UIContentSizeCategoryLarge
UIContentSizeCategoryExtraLarge
UIContentSizeCategoryExtraExtraLarge
UIContentSizeCategoryExtraExtraExtraLarge
// Accessibility sizes
UIContentSizeCategoryAccessibilityMedium
UIContentSizeCategoryAccessibilityLarge
UIContentSizeCategoryAccessibilityExtraLarge
UIContentSizeCategoryAccessibilityExtraExtraLarge
UIContentSizeCategoryAccessibilityExtraExtraExtraLarge
Rufen Sie die aktuelle Inhaltsgröße ab
Schnell
UIApplication.sharedApplication().preferredContentSizeCategory
Ziel c
[UIApplication sharedApplication].preferredContentSizeCategory;
Dies gibt eine konstante Inhaltsgrößenkategorie oder eine konstante Inhaltsgrößenkategorie für Eingabehilfen zurück.
Benachrichtigung zur Änderung der Textgröße
Sie können sich für Benachrichtigungen registrieren, wenn die Gerätetextgröße geändert wird.
Schnell
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(updateFont), name: name:UIContentSizeCategoryDidChangeNotification, object: nil)
Ziel c
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateFont) name:UIContentSizeCategoryDidChangeNotification object:nil];
Das userInfo
Benachrichtigungsobjekt enthält die neue Größe unter UIContentSizeCategoryNewValueKey
.
Passende dynamische Schriftgröße in WKWebView
WKWebView passt die Schriftarten für Webinhalte so an, dass eine Webseite in voller Größe in den Formfaktor des Geräts passt. Wenn Sie möchten, dass der Webtext sowohl im Hoch- als auch im Querformat in der Größe der bevorzugten Lesegröße des Benutzers entspricht, müssen Sie ihn explizit festlegen.
Schnell
// build HTML header for dynamic type and responsive design
func buildHTMLHeader() -> String {
// Get preferred dynamic type font sizes for html styles
let bodySize = UIFont.preferredFont(forTextStyle: UIFontTextStyle.body).pointSize
let h1Size = UIFont.preferredFont(forTextStyle: UIFontTextStyle.title1).pointSize
let h2Size = UIFont.preferredFont(forTextStyle: UIFontTextStyle.title2).pointSize
let h3Size = UIFont.preferredFont(forTextStyle: UIFontTextStyle.title3).pointSize
// On iPad, landscape text is larger than preferred font size
var portraitMultiplier = CGFloat(1.0)
var landscapeMultiplier = CGFloat(0.5)
// iPhone text is shrunken
if UIDevice.current.model.range(of: "iPhone") != nil {
portraitMultiplier = CGFloat(3.0)
landscapeMultiplier = CGFloat(1.5)
}
// Start HTML header text
let patternText = "<html> <head> <style> "
// Match Dynamic Type for this page.
+ "body { background-color: \(backgroundColor);} "
+ "@media all and (orientation:portrait) {img {max-width: 90%; height: auto;} "
+ "p, li { font: -apple-system-body; font-family: Georgia, serif; font-size:calc(\(bodySize * portraitMultiplier)px + 1.0vw); font-weight: normal; color: \(fontColor) } "
+ "h1 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h1Size * portraitMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } "
+ "h2 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h2Size * portraitMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } "
+ "h3, h4 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h3Size * portraitMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } } "
+ "@media all and (orientation:landscape) {img {max-width: 65%; height: auto;}"
+ "p, li { font: -apple-system-body; font-family: Georgia, serif; font-size:calc(\(bodySize * landscapeMultiplier)px + 1.0vw); font-weight: normal; color: \(fontColor) }"
+ "h1 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h1Size * landscapeMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } "
+ "h2 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h2Size * landscapeMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } "
+ "h3, h4 { font: -apple-system-headine; font-family: Verdana, sans-serif; font-size:calc(\(h3Size * landscapeMultiplier)px + 1.0vw); font-weight: bold; color: \(headFontColor) } } </style>"
+ "</head><body>"
+ "<meta name=\"viewport\" content=\"width: device-width\">"
return patternText
}
Umgang mit der bevorzugten Änderung der Textgröße ohne Benachrichtigungen unter iOS 10
UILabel
Klassen UILabel
, UITextField
und UITextView
verfügen ab iOS 10 über eine neue Eigenschaft, deren Schriftgröße automatisch geändert wird, wenn ein Benutzer seine bevorzugte Lesegröße namens adjustsFontForContentSizeCategory
.
Schnell
@IBOutlet var label:UILabel!
if #available(iOS 10.0, *) {
label.adjustsFontForContentSizeCategory = true
} else {
// Observe for UIContentSizeCategoryDidChangeNotification and handle it manually
// since the adjustsFontForContentSizeCategory property isn't available.
}