iOS
Typ dynamiczny
Szukaj…
Uwagi
// Content size category constants
UIContentSizeCategoryExtraSmall
UIContentSizeCategorySmall
UIContentSizeCategoryMedium
UIContentSizeCategoryLarge
UIContentSizeCategoryExtraLarge
UIContentSizeCategoryExtraExtraLarge
UIContentSizeCategoryExtraExtraExtraLarge
// Accessibility sizes
UIContentSizeCategoryAccessibilityMedium
UIContentSizeCategoryAccessibilityLarge
UIContentSizeCategoryAccessibilityExtraLarge
UIContentSizeCategoryAccessibilityExtraExtraLarge
UIContentSizeCategoryAccessibilityExtraExtraExtraLarge
Uzyskaj bieżący rozmiar treści
Szybki
UIApplication.sharedApplication().preferredContentSizeCategory
Cel C
[UIApplication sharedApplication].preferredContentSizeCategory;
Zwraca stałą kategorii wielkości treści lub stałą kategorii wielkości dostępności.
Powiadomienie o zmianie rozmiaru tekstu
Możesz zarejestrować się, aby otrzymywać powiadomienia o zmianie rozmiaru tekstu urządzenia.
Szybki
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(updateFont), name: name:UIContentSizeCategoryDidChangeNotification, object: nil)
Cel C
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateFont) name:UIContentSizeCategoryDidChangeNotification object:nil];
Obiekt userInfo
powiadomienia zawiera nowy rozmiar w obszarze UIContentSizeCategoryNewValueKey
.
Dopasowywanie rozmiaru czcionki typu dynamicznego w WKWebView
WKWebView zmienia rozmiar czcionek w treści internetowej, aby pełnowymiarowa strona pasowała do formatu urządzenia. Jeśli chcesz, aby tekst internetowy zarówno w orientacji pionowej, jak i poziomej miał podobny rozmiar do preferowanego przez użytkownika rozmiaru do czytania, musisz go wyraźnie ustawić.
Szybki
// 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
}
Obsługa preferowanej zmiany rozmiaru tekstu bez powiadomień w systemie iOS 10
UITextField
UILabel
, UITextField
i UITextView
mają nową właściwość, zaczynającą się od iOS 10, do automatycznego zmieniania rozmiaru czcionki, gdy użytkownik zmieni preferowany rozmiar odczytu o nazwie adjustsFontForContentSizeCategory
.
Szybki
@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.
}