[英]What fonts are guaranteed to be available on an iOS device?
我想知道在iOS設備上保證可以使用哪些字體 。
我用這個,它工作正常:
[[UITabBarItem appearance] setTitleTextAttributes:
[NSDictionary dictionaryWithObjectsAndKeys:
[UIColor grayColor], UITextAttributeTextColor,
[UIColor lightGrayColor], UITextAttributeTextShadowColor,
[NSValue valueWithUIOffset:UIOffsetMake(1, 1)], UITextAttributeTextShadowOffset,
[UIFont fontWithName:@"Helvetica Bold" size:0.0], UITextAttributeFont,
nil]
forState:UIControlStateNormal];
然后,我認為為字典使用新語法可能會更好,更方便,所以我嘗試了以下方法:
[[UITabBarItem appearance] setTitleTextAttributes:@{
UITextAttributeFont : [UIFont fontWithName:@"Helvetica-Bold" size:0.0f],
UITextAttributeTextColor : [UIColor grayColor],
UITextAttributeTextShadowColor : [UIColor lightGrayColor],
UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetMake(1.0f, 1.0f)],
} forState:UIControlStateNormal];
它確實有效,但是我擔心一些問題。
最初,我嘗試過這種字體, [UIFont fontWithName:@“ Helvetica Bold” size:0.0] 。 該字體實際上不存在,因此返回的UIFont為nil 。
使用dictionaryWithObjectsAndKeys的舊方法可以很好地處理nil字體,但是新的@ {}語法會使應用程序崩潰。
我可以通過使用正確的字體名稱@“ Helvetica-Bold” (需要連字符)來解決此問題,但是如果設備可能沒有字體,我擔心選擇字體並使用此語法。所選字體可用並崩潰。
由於使用dictionaryWithObjectsAndKeys的舊方法可以很好地工作,並且顯然可以處理nil字體,因此我傾向於只使用它並在晚上輕松入睡。
我當然可以輸入邏輯來檢查nil字體並采取措施來處理該字體,但是由於舊方法可以處理這種情況,因此這似乎是不必要的浪費時間。
最好始終使用舊的語法會更好,因為無法確定將來的設備上可能會使用哪些字體?
對於這個問題,蘋果有些失望。
有什么想法,意見或建議嗎?
您可以使用
NSArray *familyNames = [UIFont familyNames];
然后,對於數組中的每個familyName
,您都可以看到可用的fontNames:
NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
這將為您提供設備上可用字體名稱的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.