使用iphone 4中的特定字体,但不是3.2版之前

时间:2010-09-27 15:41:07

标签: iphone fonts

我正在为我的应用程序使用外部字体功能。 由于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'

任何人都知道问题是什么?提前致谢

3 个答案:

答案 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) {

因为字符串比较不会削减它。