为了账号安全,请及时绑定邮箱和手机立即绑定

情节提要中的自定义字体?

情节提要中的自定义字体?

iOS
千万里不及你 2019-12-10 09:36:44
我在我的iOS项目中添加了一种字体。它在项目中,并在项目构建时复制。它似乎是有效的字体,如果我通过该应用列出设备上的所有字体,它将显示出来。我已经正确设置了plist以包含字体。我似乎找不到在Xcode 4.2的故事板部分的文本控件,按钮等中使用它的发现。此外,它似乎不允许我输入字体名称,它迫使我使用字体对话框。我也尝试在系统中安装此字体,但似乎无法使其显示在此列表中。我是否只需要用代码执行此操作,还是可以通过情节提要界面执行此操作?请注意,我可以在代码中使用它,但是通过情节提要进行此操作会更加方便。
查看完整描述

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下添加标志,以强制链接器包括类别。


查看完整回答
反对 回复 2019-12-10
?
慕村9548890

TA贡献1884条经验 获得超4个赞

从Xcode6.0开始,作为Xcode6.0发行说明:


Interface Builder会在设计期间渲染嵌入式自定义iOS字体,从而以正确的尺寸更准确地预览成品应用的外观。


您可以在情节提要中设置标签字体。您可以执行以下操作


获取自定义字体文件(.ttf, .ttc)

将字体文件导入Xcode项目


在app-info.plist中,添加一个由应用程序提供的名为Fonts的键。它是一个数组类型,将所有字体文件名添加到数组中,注意:包括文件扩展名。


在情节提要中,将UILabel拖到您的界面上,选择标签,然后导航到“ 属性”检查器,单击“ 字体”选择区域的右键图标按钮。在弹出面板中,选择“ 字体到自定义”,然后选择要嵌入的“ 族 ”字体名称。


查看完整回答
反对 回复 2019-12-10
?
富国沪深

TA贡献1790条经验 获得超9个赞

从XCode 9.4开始,XCode仍不直接在情节提要中尊重字体。您可以在设计时看到它们,但不能在运行时看到它们。如果使用fontWithName API,您将知道它返回nil,但是在情节提要/ xib中使用时,无法知道为什么它不出现。

  • 确保它在运行时可以从Storyboard / XIB轻松运行的唯一方法是将.ttc / .ttf添加到Copy Bundle ResourcesBuild Phase中。

  • 从9.4开始,将字体文件名添加到info.plist似乎不再是必需的。


查看完整回答
反对 回复 2019-12-10
  • 3 回答
  • 0 关注
  • 474 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信