我们有UIMutableFont还是什么?
如果我想要相同的字体但又要稍微大一点,该怎么办?
更新:我测试了它会导致运行时错误。然后问题就改变了。为什么它是运行时错误而不是编译错误。
[self.Title.font mutableCopy]
实际上会编译
答案 0 :(得分:3)
来自mutableCopy
文件(强调我的):
这是采用该方法的类的便捷方法
NSMutableCopying
协议。 如果没有,则会引发异常mutableCopyWithZone:
的实施。
来自NSMutableCopying Protocol Reference参考:
NSMutableCopying
声明了一个方法mutableCopyWithZone:
,但是可变复制是 通常用便捷方法mutableCopy调用。mutableCopy
方法是为所有NSObjects
定义的,只是调用 mutableCopyWithZone:使用默认区域。
所以
[someObject mutableCopy];
将始终编译,但如果对象未实现则在运行时失败
mutableCopyWithZone:
。
copy
vs copyWithZone:
也是如此。
答案 1 :(得分:1)
UIFont是不可变的,我们没有UIMutableFont的选项。它不支持mutableCopy选择器,因为它不符合NSMutableCopying。
但是,如果要更改字体对象的大小,可以使用 fontWithSize: API。 例如:
//creating font
UIFont *someFont = [UIFont fontWithName:@"font-name" size:15.0f];
UIFont *biggerFont = [someFont fontWithSize:17.0f];
不幸的是,您必须为不同的大小保留单独的Font对象。 我认为最好的方法是保持Font宏像:
#define HEL_NEUE(xx) [UIFont fontWithName:@"HelveticaNeue" size:xx]
您可以在任何地方使用它,并相应地传递所需的大小。