IOS運行時動態註冊字型

來源:互聯網
上載者:User

標籤:des   android   blog   io   os   使用   strong   檔案   div   

  IOS運行時動態註冊字型


  在IOS開發中,使用第三方字型,如ttf檔案,otf檔案,是很簡單的。只需要兩個步驟。1,講 ttf檔案,otf檔案添加到工程根目錄中。2,在info.plist中增加字型檔,是字型檔名。在使用時,雙擊開啟字型檔,標題會顯示字型名稱,使用那個自體名稱(setFontName)即可。在android中,是把字型檔拷貝到asset目錄中,再使用typeface類根據檔案得到其執行個體。

  現在的問題是,在我們玩圖的開發中,由於中文字型過大,需要從線上下載,下載到本地使用,這就涉及到一個註冊字型問題。IOS應用程學在啟動時,會自動讀取info.plist檔案,如果在在目前的目錄找到對應的字型檔,就會向系統註冊這個字型,然後才能根據字型名稱使用。所以在字型線上下載這個功能中,提前在infp.plist中註冊字型是不可行的,那就要動態註冊字型了,就是運行時下載字型ttf檔案,下載到documents目錄中,然後根據字型檔全檔案名稱(ttfFileName)去註冊。下面是關鍵的代碼。、

  

   NSURL *url = [NSURL fileURLWithPath:ttfFileName];

        CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef)url);

        if (fontDataProvider == NULL)

            return ttfFileName;

        CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider);

    

        CFErrorRef error;

        if(!CTFontManagerRegisterGraphicsFont(newFont, &error)){

            CFStringRef errorDescription = CFErrorCopyDescription(error);

            NSLog(@"Failed to load font: %@", errorDescription);

            CFRelease(errorDescription);

        }

        CFRelease(newFont);

        CFRelease(fontDataProvider);

  這就是根據字型檔的全檔案名稱動態註冊的代碼。android就不存在註冊不註冊的問題,因為它本來就是根據字型檔全檔案名稱來省城typeface執行個體的。

IOS運行時動態註冊字型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.