是否可以從網上下載.ttf文件並將其存儲在iPhone上。然後用它來做標籤和所有其他的東西?因爲我的客戶想要控制來自數據庫的字體,並且不想立即將字體放到xcode項目中。從網絡下載字體.ttf文件並在iPhone上存儲
所以在未來如果他想改變字體,他會添加新的字體到數據庫,應用程序將識別新的字體在網絡上(這已經完成與圖像,而不是一個問題),下載並使用字體。
謝謝。
是否可以從網上下載.ttf文件並將其存儲在iPhone上。然後用它來做標籤和所有其他的東西?因爲我的客戶想要控制來自數據庫的字體,並且不想立即將字體放到xcode項目中。從網絡下載字體.ttf文件並在iPhone上存儲
所以在未來如果他想改變字體,他會添加新的字體到數據庫,應用程序將識別新的字體在網絡上(這已經完成與圖像,而不是一個問題),下載並使用字體。
謝謝。
字體必須在應用程序的plist中設置,並且該文件在運行時不能更改,因此您需要使用已添加到其中的字體來編譯項目。
您必須以其他方式來實現它。
您可以使用FontLabel(https://github.com/vtns/FontLabel)或smth。類似於從文件系統加載ttfs。我不認爲你可以使用UILabel下載的字體。因爲你需要每種字體的plist條目。
我會從數據庫下載ttf,然後在下載並添加到plist(系統或新建,自己創建的)時將它們用於標籤或任何其他文本。可能嗎? – user1832330
FontLabel是UILabel的替代品。在iOS 4之前,這是使用自定義字體的唯一選擇。使用FontLabel你不需要一個plist入口 - 所以你的下載方法應該可以工作。 – calimarkus
其實這是可以動態字體到這樣iOS的運行:
NSData *fontData = /* your font-file data */;
CFErrorRef error;
CGDataProviderRef provider = CGDataProviderCreateWithCFData((CFDataRef)inData);
CGFontRef font = CGFontCreateWithDataProvider(provider);
if (! CTFontManagerRegisterGraphicsFont(font, &error)) {
CFStringRef errorDescription = CFErrorCopyDescription(error)
NSLog(@"Failed to load font: %@", errorDescription);
CFRelease(errorDescription);
}
CFRelease(font);
CFRelease(provider);
來源:馬科·阿門特的This Blog Article。
這是可能的。我在github中創建了一個示例swift項目。你必須添加下面的幾行。
var uiFont : UIFont?
let fontData = data
let dataProvider = CGDataProviderCreateWithCFData(fontData)
let cgFont = CGFontCreateWithDataProvider(dataProvider)
var error: Unmanaged<CFError>?
if !CTFontManagerRegisterGraphicsFont(cgFont, &error)
{
print("Error loading Font!")
} else {
let fontName = CGFontCopyPostScriptName(cgFont)
uiFont = UIFont(name: String(fontName) , size: 30)
}
那是什麼我還以爲......嗯,我會告訴他所有需要的字體到Xcode的項目,然後就調整其從數據庫中使用..所以我不能打開另一個自己創建的plist的字體? – user1832330
它必須在應用程序的主plist中,這是在編譯時創建的,所以沒有什麼可以dom,對不起。如果它有用,請接受答案。 –
謝謝你的幫助。 – user1832330