Ios 子类化UIFont
是否可以将Ios 子类化UIFont,ios,swift,text,ios9,uifont,Ios,Swift,Text,Ios9,Uifont,是否可以将UIFont子类化并用另一个(或字体描述符)初始化它?问题是,我不能调用super.init(描述符:size:)进行初始化,因为它是一个方便的初始化器。这样做的目的是更改递增者和递减者的属性(覆盖只读属性),因为我只显示数字,字母上下有太多空白(我直接在图形上下文中绘制)。当有另一个优雅的解决方案时,它将是非常受欢迎的 我感谢您的帮助,提前谢谢。您所要求的中断封装,可能也没有意义 与其使用继承,而且只需一些假设,实现这一点的更整洁的方法是向UIFont添加一个,并提供自己的便利工厂(
UIFont
子类化并用另一个(或字体描述符)初始化它?问题是,我不能调用super.init(描述符:size:)
进行初始化,因为它是一个方便的初始化器。这样做的目的是更改递增者
和递减者
的属性(覆盖只读属性),因为我只显示数字,字母上下有太多空白(我直接在图形上下文中绘制)。当有另一个优雅的解决方案时,它将是非常受欢迎的
我感谢您的帮助,提前谢谢。您所要求的中断封装,可能也没有意义 与其使用继承,而且只需一些假设,实现这一点的更整洁的方法是向
UIFont
添加一个,并提供自己的便利工厂(例如类)方法
有一些警告:
实际上响应选择器UIFont
和setAscender
——它们隐藏在公共界面上setDecender
- 设置这些属性会对布局产生影响,反之,不会产生不必要的副作用
- 你在一个黑匣子里闲逛,无法保证你所做的事情会有效,或者会继续有效
@interface UIFont (MyUIFont)
@property (assign) CGFloat ascender;
@property (assign) CGFloat descender;
+(instancetype) UIFontWithLessSpacing;
@end
@implementation UIFont (MyUIFont)
+(instancetype) UIFontWithLessSpacing
{
UIFont *font = [UIFontWIthName:@"MyFont" size:12.0f];
font.ascender = 0.0;
font.descender = 0.0;
return font;
}