swift - lineSpacing 是 UILabel 的属性吗?

标签 swift uilabel subclass

我有一个 UILabel 的子类,其属性 lineSpacing 设置如下:

var lineSpacing = CGFloat(20.0)

当我在这里使用它时,它会向上推文本,即使它没有用于任何用途,我也删除了除该属性之外的所有代码:

class CustomLabel : UILabel {
    var lineSpacing = CGFloat(20.0)
}

它仍然向上推,我更改了属性的名称并修复了它,我只是想知道这是从哪里来的,因为我无法从 访问 lineSpacing UILabel

regularLabel.lineSpacing

报错。

最佳答案

是的,UILabel 有一个未记录的、非公开的 lineSpacing 属性。您可以在这个根据运行时 Objective-C 元数据创建的头文件中看到它:

https://github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/UIKit.framework/UILabel.h

由于它不是公开的,如果您将其提交到 App Store,覆盖它(即使是意外地)可能会导致 Apple 拒绝您的应用。

关于swift - lineSpacing 是 UILabel 的属性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37709704/

相关文章:

ios - 创建一个函数以在 Swift4 中从字符串数组以编程方式创建 UILabel

Java - 可以在抽象方法的参数中枚举

swift - 枚举中的方法在声明中不需要参数时要求参数

iphone - 如何使用 Swift 编程在 iOS 8 中退出应用程序并返回主屏幕

ios - 漏洞? UITextFieldDelegate 的 UILabel 实时更新被一个字符关闭

ios - 淡出 UILabel 中最后 5 像素的文本

ios - UICollectionView 向下滚动时出错

swift - 当我编译应用程序时,我得到一个等于这个 : Could not build Objective-C module 'Firebase' 的错误

java - Java继承中的私有(private)成员

python - 实例是 "object",但类不是 "object": how is this possible? 的子类