如何给我的标签上课?

时间:2015-07-23 07:20:34

标签: ios swift xcode6 uilabel

我已经以编程方式创建了一个标签 -

var label = UILabel(frame: CGRect(x: 31, y: 169, width: 258, height: 258))
label.textAlignment = NSTextAlignment.Center
label.text = ""
label.backgroundColor = UIColor.blackColor()
self.view.addSubview(label)

我还创建了一个Cocoa Touch类文件,它是UILabel的子类。此文件将覆盖drawRect方法。我想让这个文件成为我创建的Label的类。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:0)

你可以这样做:

var classLbl = YourClass()  //instead of using UILabel use your class.
classLbl.frame = CGRectMake(31, 169, 258, 258)
classLbl.textAlignment = NSTextAlignment.Center
classLbl.text = ""
//and so on

答案 1 :(得分:0)

当你继承某些东西时,这意味着你正在“扩展”你的“父母”的功能 - 在你的情况下UILabel - 并且创造一个“孩子”。有更多方法可以扩展某些类的功能,但这是最基本的方法。

当您创建子类时,您基本上是在说“将这些函数附加到父级”,如果它们相同,则覆盖它们(这就是您需要override个关键字的原因。)

在您的情况下,您创建了UILabel的子类,可能是这样的:

class MyLabel : UILabel {

    override func drawRect(rect: CGRect) {

        // Your drawing code
    }
}

如果你想使用它,你只需要用不同的类分配你的变量;您MyLabel

的那个
var label = MyLabel(frame: CGRectZero)

MyLabel类自动继承UILabel中的所有构造函数,变量和方法,因此您可以像以前一样使用以前的所有功能。

注意:虽然它是不同的数据类型,但如果您有方法:

func useMyLabel(label : UILabel) {

     // Do something with my label
}

您仍然可以使用您的对象填充“label”参数,因为它是UILabel的子代。在这种情况下,您创建“额外”的方法将无法被您访问,除非您强制将变量类型转换为您的类型,如下所示:

let myLabel = label as! MyLabel

如果您想了解有关继承的更多信息,Apple Documentation提供了有关如何在swift中工作的所有内容,或者wikipedia article提供了相当广泛的内容,并且不仅提供了有关类继承的更多信息。