簡體   English   中英

保證可以在iOS設備上使用哪些字體?

[英]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] 該字體實際上不存在,因此返回的UIFontnil

使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM