我正在为我的应用程序使用外部字体功能。 由于3.1版本不支持外部字体,因此我想定义与执行程序的IOS相关的字体名称。我在Constants.h文件中定义了MY_FONT_NAME变量,如下所示:
//#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2
#ifdef __IPHONE_3_2
#define MY_FONT_NAME @"ExternalFontName"
#else
#define MY_FONT_NAME @"AppleGothic"
#endif
我已经尝试了两个,第一个注释行和第二个,没有成功,但它总是得到“externalFontName”的值,甚至在3.1设备上执行...所以,当我在标签中设置字体时得到错误
'NSInternalInconsistencyException',原因:'无效参数不满意:font!= nil'
任何人都知道问题是什么?提前致谢
答案 0 :(得分:2)
好吧,我知道,宏是在编译时执行的,那就是问题..这太傻了!抱歉:)
所以我认为我应该使用类似的东西:
if ([[UIDevice currentDevice] systemVersion] >= @"3.2") {
return @"myExternalFontName";
} else {
return @"AppleGothic";
}
或者有人有更好的解决方案吗?感谢
答案 1 :(得分:1)
也许更好的方法是使用UIFont的+fontWithName:size:
来检查字体的可用性,和/或检查+familyNames
中返回的数组和
+fontNamesForFamilyName:
。
例如,我相信有一些字体仅出现在运行3.2的iPad上,即使是运行4.0的iPhone也是如此。
答案 2 :(得分:1)
Eva Madrazo很接近。你真正需要的是:
if ([[[UIDevice currentDevice] systemVersion]doubleValue] >= 3.2) {
因为字符串比较不会削减它。