3 回答
TA贡献1806条经验 获得超5个赞
更新:Xcode 6 Interface Builder现在允许您选择自定义字体,并将在设计时正确呈现它们。
我知道这个问题已经很久了,但是我一直在努力寻找一种简单的方法来轻松为iOS 5在Storyboard(或Interface Builder)中指定自定义字体,因此我找到了一个非常方便的解决方案。
首先,请按照本教程的说明,将字体添加到项目中。还请记住,可以使用UIAppearance代理的setTitleTextAttributes:方法来指定UINavigationBar,UITabBar和UISegmentedControl自定义字体。
将以下类别添加到项目中,用于UIButton,UITextField,UILabel和任何其他需要自定义字体的组件。这些类别仅实现了一个新属性fontName,该属性可以更改元素的当前字体,同时保持字体大小。
要指定在故事板的字体,只需选择所需的元素(标签,按钮,TextView的,等等),并添加一个用户自定义运行属性与关键路径设置为的fontName类型的字符串和值与您的自定义字体的名称。
自定义字体故事板
就是这样,您甚至不需要导入类别。这样,您不需要为每个需要自定义字体的UI组件都提供一个插座,也不需要手动对其进行编码。
考虑到该字体不会在Storyboard中显示,但是在设备或模拟器上运行时会看到该字体。
分类文件
UIButton + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UIButton (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UIButton + TCCustomFont.m:
#import "UIButton+TCCustomFont.h"
@implementation UIButton (TCCustomFont)
- (NSString *)fontName {
return self.titleLabel.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.titleLabel.font = [UIFont fontWithName:fontName size:self.titleLabel.font.pointSize];
}
@end
UILabel + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UILabel (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UILabel + TCCustomFont.m:
#import "UILabel+TCCustomFont.h"
@implementation UILabel (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
UITextField + TCCustomFont.h:
#import <UIKit/UIKit.h>
@interface UITextField (TCCustomFont)
@property (nonatomic, copy) NSString* fontName;
@end
UITextField + TCCustomFont.m:
#import "UITextField+TCCustomFont.h"
@implementation UITextField (TCCustomFont)
- (NSString *)fontName {
return self.font.fontName;
}
- (void)setFontName:(NSString *)fontName {
self.font = [UIFont fontWithName:fontName size:self.font.pointSize];
}
@end
也可以从GIST下载,也可以作为一个文件下载。
故障排除
如果由于fontName未指定属性而遇到运行时错误,只需在项目设置中的“ 其他链接器标志” -all_load下添加标志,以强制链接器包括类别。
TA贡献1884条经验 获得超4个赞
从Xcode6.0开始,作为Xcode6.0发行说明:
Interface Builder会在设计期间渲染嵌入式自定义iOS字体,从而以正确的尺寸更准确地预览成品应用的外观。
您可以在情节提要中设置标签字体。您可以执行以下操作
获取自定义字体文件(.ttf, .ttc)
将字体文件导入Xcode项目
在app-info.plist中,添加一个由应用程序提供的名为Fonts的键。它是一个数组类型,将所有字体文件名添加到数组中,注意:包括文件扩展名。
在情节提要中,将UILabel拖到您的界面上,选择标签,然后导航到“ 属性”检查器,单击“ 字体”选择区域的右键图标按钮。在弹出面板中,选择“ 字体到自定义”,然后选择要嵌入的“ 族 ”字体名称。
TA贡献1790条经验 获得超9个赞
从XCode 9.4开始,XCode仍不直接在情节提要中尊重字体。您可以在设计时看到它们,但不能在运行时看到它们。如果使用fontWithName API,您将知道它返回nil,但是在情节提要/ xib中使用时,无法知道为什么它不出现。
确保它在运行时可以从Storyboard / XIB轻松运行的唯一方法是将.ttc / .ttf添加到
Copy Bundle Resources
Build Phase中。从9.4开始,将字体文件名添加到info.plist似乎不再是必需的。
- 3 回答
- 0 关注
- 525 浏览
添加回答
举报