我在运行时加载ttf字体并使用CoreText注册它们.稍后,当字体更新时,我从CoreText取消注册字体,从服务器下载最新版本并再次使用CoreText注册字体.
这几乎可以工作,但看起来字体是缓存的,直到我的应用程序终止并重新启动才更新.
取消注册字体并从任何缓存中删除它的正确方法是什么?
我使用此代码取消注册字体:
NSURL *url = /* My url to the font */; CGDataProviderRef fontDataProvider = CGDataProviderCreateWithURL((__bridge CFURLRef) url); CGFontRef newFont = CGFontCreateWithDataProvider(fontDataProvider); CGDataProviderRelease(fontDataProvider); CFErrorRef error = nil; CTFontManagerUnregisterGraphicsFont(newFont,&error); CGFontRelease(newFont); if (error) { NSLog(@"Error unregistering font: %@",error); } return newFontName;
我觉得有一件事是错的,但不知道如何解决,是我如何得到CGFontRef. CGFontCreateWithDataProvider每次都会创建新的引用,还是我已经注册了已注册的CGFontRef(如果存在的话)?有没有更好的方法来获得已注册字体的CGFontRef?
我只使用字体来创建动态UIImage实例,所以我认为没有任何标签或其他UI元素保持对字体的引用.
谢谢你的帮助!
解决方法
经过一番尝试,我认为这是iOS 7的一个错误. 你试过在iOS 6中运行吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。