在iPhone4中使用特定字体,但不是在3.2版之前
我正在为我的应用程序使用外部字体功能。 由于3.1版不支持外部字体,我想定义与正在执行程序的IOS相关的字体名称。我在Constants.h文件中定义了我的\u FONT\u NAME变量,如下所示:在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
//#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) {
因为字符串比较并不能解决问题。好主意。:)(因此有一个愚蠢的字符限制…)