在iPhone4中使用特定字体,但不是在3.2版之前

在iPhone4中使用特定字体,但不是在3.2版之前,iphone,fonts,Iphone,Fonts,我正在为我的应用程序使用外部字体功能。 由于3.1版不支持外部字体,我想定义与正在执行程序的IOS相关的字体名称。我在Constants.h文件中定义了我的\u FONT\u NAME变量,如下所示: //#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_3_2 #ifdef __IPHONE_3_2 #define MY_FONT_NAME @"ExternalFontName" #else #define

我正在为我的应用程序使用外部字体功能。 由于3.1版不支持外部字体,我想定义与正在执行程序的IOS相关的字体名称。我在Constants.h文件中定义了我的\u FONT\u 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!=零


有人知道问题出在哪里吗??提前感谢

好的,我知道,宏是在编译时执行的,这就是问题所在。。真蠢!对不起:)

因此,我认为我应该使用类似于:

  if ([[UIDevice currentDevice] systemVersion] >= @"3.2") {
    return @"myExternalFontName";
} else {
    return @"AppleGothic";
}

还是有人有更好的解决方案?谢谢

也许更好的方法是使用UIFont的
+fontWithName:size:
检查字体的可用性,和/或检查
+familyNames
返回的数组,以及
+fontNamesForFamilyName:


例如,我相信有些字体只出现在运行3.2的iPad上,甚至与运行4.0的iPhone相比。

伊娃·马德拉佐(Eva Madrazo)就差一点了。你真正需要的是:

if ([[[UIDevice currentDevice] systemVersion]doubleValue] >= 3.2) {
因为字符串比较并不能解决问题。

好主意。:)(因此有一个愚蠢的字符限制…)