什么更有效,覆盖drawRect或使用viewWillAppear

时间:2013-04-23 13:20:29

标签: ios objective-c cocoa-touch uitextview

我在几个UITextView中有几个ViewController个。过去,当我有一些需要TextViewLabel等自定义绘图的实例时,我只会调整拥有UI的VC中viewWillAppear内的绘图宾语。这次,我需要定制几个实例。

创建一个子类UITextView并在drawRect中包含绘图代码而不是在几个VC周围分布相同的绘图代码更合适。我主要担心的是表现。代码可维护性是次要问题。

要清楚,这就是我在drawRect中使用的内容:

- (void)drawRect:(CGRect)rect {
    self.layer.cornerRadius = 10;
    self.clipsToBounds = YES;
}

因此,在进一步测试后,initWithFrame不会被调用,但initWithCoder会被调用。我还发现initWithCoder被调用一次,drawRect也被调用。在我的用例中(单元格中StaticCellTableView UITextView,有什么区别?

3 个答案:

答案 0 :(得分:3)

您可以在init或initWithCoder中包含这两行(如果是xib或storyboard),则可以在子类UITextView中包含这两行。 基本上,这只是对象的属性 - 每次UIView需要刷新时都不需要运行。

答案 1 :(得分:0)

创建一个ViewController基类,然后将其用作所有其他VC的超类。然后,您可以添加此方法和其他便利方法,并分享财富。

在这种特殊情况下,将它放在viewDidLoad的末尾将是一个好地方,因为它只被消息一次,其中viewWillAppear可能被多次调用。如果使用viewdidLoad,代码将执行一次。

答案 2 :(得分:0)

我不会将这些行放在视图的drawRect中,因为每次刷新都需要这些行。我建议您继承UITextView并将这些行添加到自定义init方法中。

相关问题