gpt4 book ai didi

ios - 子类化 UIFont

转载 作者:搜寻专家 更新时间:2023-11-01 05:44:43 24 4
gpt4 key购买 nike

是否可以继承 UIFont 并用另一个(或字体描述符)初始化它?问题是,我不能调用 super.init(descriptor:size:) 进行初始化,因为它是一个方便的初始化程序。这样做的目的是更改 ascenderdescender 的属性(覆盖只读属性),因为我只显示数字并且空格太多字母的上方和下方(我直接在图形上下文中绘制)。如果有另一种优雅的解决方案,那将是非常受欢迎的。

非常感谢您的帮助,在此先致谢。

最佳答案

您所要求的中断封装,也许也没有意义。

与其使用继承,而且有一些假设,一个更简洁的实现方法是添加一个 category。到 UIFont 并提供您自己的便利工厂(例如类)方法。

@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;
}

注意事项:

  • UIFont 实际上响应选择器 setAscendersetDescender - 它们隐藏在公共(public)界面上
  • 设置这些属性会对布局产生影响,相反不会产生不需要的副作用。
  • 你在一个黑盒子里四处摸索,不能保证你所做的会奏效,或者会继续奏效。

关于ios - 子类化 UIFont,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771877/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com