我目前正在尝试通过阅读Apple提供的书并参考Swift的UIKit API来学习Swift。
以下是我在网上找到的创建简单UIButton的代码......
var button = UIButton(frame: CGRectMake(0, 20, 100, 32))
button.setTitle("I'm a Button", forState: UIControlState.Normal)
button.setTitleColor(UIColor.blueColor(), forState: UIControlState.Normal)
view.addSubview(button)
一切都是自我解释的,但我不知道的事情是我们如何知道UIButton有一个构造函数(初始化程序),如果我没有看到它列在UIKit documentation的任何地方
这是我想要更好理解的代码行。
var button = UIButton(frame: CGRectMake(0, 20, 100, 32))
同样,我怎么知道UIButton有一个构造函数,如果我不认为它列在UIButton class的任何地方?
,它会将CGPoint作为参数由于
答案 0 :(得分:4)
那是因为UIButton
从其超类继承了NSObject
如果您检查UIView
UIControl
UIButton
的超级类CGRect
,它是{{1}}的直接超类,您将看到初始值设定项将{{1}}作为参数。
所以,基本上,如果你想看到给定类可用的所有初始化器,你必须在它的类层次结构中一直向上看。
答案 1 :(得分:2)
引用的代码行与
相同UIButton * button = [[UIButton alloc] initWithFrame:CGRectMake(0.f, 20.f, 100.f, 32.f)];
在ObjC。
关键点在这里,–initWithFrame:
是UIView
类的方法,UIButton
是继承的,因此如果您需要了解更多有关特定方法的信息,那么可能需要检查父类或其父类等,以便找到它。
在推荐文档中,您可以找到关于继承的部分,如:
你可以查看父类'实际类的方法一个接一个。这几乎就是如何获得有关未列出的方法的更多信息。在实际的类参考。
中答案 2 :(得分:0)
我的一部分困惑是因为我希望找到一个构造函数而不是初始化器。
UIView将itializer列为以下内容......
init(frame:)
init(frame aRect: CGRect)
...在Objectice-C中有意义,因为它没有构造函数而是使用初始化器,但对于Swift,我期待更像构造函数,其中构造函数的命名方式与类相同,像...
UIButton (frame:)
CGRect UIButton (frame aRect: CGRect)
或者在这种情况下是一个UIView构造函数
UIView (frame:)
CGRect UIView (frame aRect: CGRect)
我不知道我在哪里阅读Swift支持的构造函数。我想我需要阅读更多关于Swift和编程的内容。
谢谢