我有一個自定義字體包含在我的項目中,直到我將我的Xcode升級到版本6並以iOS 8作爲基礎SDK時,它才工作得很好。現在,如果我在iOS 8模擬器或設備上運行應用程序,自定義字體不再有效,但它仍然可以在我的iOS 7設備上運行。有什麼建議麼?自定義字體不適用於iOS 8
回答
我發現了「缺失」字體的原因。實際上字體仍然存在,但是從iOS 7到iOS 8,字體名稱有一個微妙但突然的變化:在iOS 7中,它被調用,例如, 「Custom_Font-Style」,但現在在iOS 8中被稱爲「Custom-Font-Style」。注意Custom和Font之間的下劃線現在變成短劃線。幸運的是字體系列名稱保持不變,爲「定製字體家庭」,所以現在而不是硬編碼的字體名稱我不得不從字體系列中提取出來,像這樣:
static NSString *_myCustomFontName;
+ (NSString *)myCustomFontName
{
if (!_myCustomFontName)
{
NSArray *arr = [UIFont fontNamesForFamilyName:@"Custom Font Family"];
// I know I only have one font in this family
if ([arr count] > 0)
_myCustomFontName = arr[0];
}
return _myCustomFontName;
}
我不知道字體文件如何顯示其信息,但現在我想我的字體文件(自定義字體.ttf)只提供字體系列名稱「自定義字體系列」,並且iOS從特定規則中獲取其字體名稱,出於某種原因從iOS 7到iOS 8,所以在使用Custom_Font-Style之前,現在我們有Custom-Font-Style。
如前所述,iOS 8和以前版本的字體名稱讀取方式不同。我不得不在把支票來決定使用哪個名稱:
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8) {
OS_SPECIFIC_GOTHIC_FONT = @"New";
} else {
OS_SPECIFIC_GOTHIC_FONT = @"Highway Gothic";
}
您可以使用搜索,獲取信息和字體冊找到不同的名稱(iOS 8的使用,而其餘的字體冊標題在獲取信息中使用全名)
在我的情況下,另一個解決方案工作。當我將字體添加到項目中時,它們不會自動添加到已編譯的束包資源中。所以我必須去'目標' - >'建立階段' - >'複製捆綁資源'並手動添加所有字體。這奏效了
真棒..爲我工作.. +1 – 2016-03-15 05:35:58
由於http://codewithchris.com/common-mistakes-with-adding-custom-fonts-to-your-ios-app/建議,應該列出在運行時可用的所有字體查看自定義字體是否可用:
for family: String in UIFont.familyNames() {
print("\(family)")
for name: String in UIFont.fontNamesForFamilyName(family) {
print("== \(name)")
}
}
拉爾斯·布隆伯格答案Swift 3
for family in UIFont.familyNames {
print("\(family)")
for name: String in UIFont.fontNames(forFamilyName: family) {
print("== \(name)")
}
}
- 1. sizeWithFont:constrainedToSize不適用於自定義字體
- 2. 自定義字體不適用於我的iOS應用程序
- 3. 自定義字體不適用於iOS 10中的iMessage擴展
- 4. IOS 8,自定義字體問題
- 5. UIScreenEdgePanGestureRecognizer不適用於iOS 8
- 6. Testflight不適用於iOS 8
- 7. AlamofireObjectMapper不適用於iOS 8
- 8. 字體不適用於自定義語言字符
- 9. 自定義ttf字體不適用於iPhone應用程序
- 10. 自定義字體不適用於Appcelerator Titanium SDK 5.3.1
- 11. Rails自定義字體不適用於Firefox和IE
- 12. iOS的自定義字體
- 13. iOS 5自定義字體
- 14. 定製的自定義Url方案不適用於iOS 9
- 15. VTCompressionSessionCreate適用於iOS 9,但不適用於iOS 8
- 16. 觸摸控件適用於iOS 7,6,5 ...但不適用於iOS 8
- 17. 約束條件適用於iOS 8,但不適用於iOS 7
- 18. 字體真棒不適用於iOS
- 19. 不能找到自定義字體 - iOS
- 20. 自定義字體iOS不顯示
- 21. iOS:自定義字體大小不變
- 22. 自定義字體在ios不工作
- 23. Ionic 2 RC3 iOS 8自定義字體字母間距問題
- 24. 的UITextView呈現自定義字體錯誤地適用於iOS 7
- 25. 當使用itext將html轉換爲pdf時,自定義字體適用於Windows,但不適用於Ubuntu。
- 26. iOS 8中的自定義字體未顯示
- 27. 添加自定義字體,鍵盤擴展IOS 8
- 28. SceneKit euler角度不適用於iOS 8
- 29. Xamarin.iOS NSUrlSession不適用於iOS 8
- 30. 適用於本機應用程序的iOS 8自定義鍵盤
如何進行進入Info.plist的樣子。該文件位於您的應用程序中的位置?你如何訪問字體? – idmean 2014-09-20 15:41:34
我知道,至少在Xcode5中,如果您在文件名中使用大寫字母而不是大寫字母,但在設備上它確實很重要。也許他們也改變了Xcode6的這個規則。 – bdv 2014-09-20 19:34:42
@bdv是的,我記得很久以前,當處理模擬器和設備中顯示/未顯示的一些圖像時。至於這個字體的東西,我檢查過,它都是小寫字母,並且匹配磁盤上的文件名。 – CodePlumber 2014-09-20 20:49:40