2013-02-21 145 views
0

UIControl是否有记录的生命周期?UIControl生命周期

这就是为什么我问:

假设我有一个的UITextField。我可以很容易地创建一个按钮,改变边框颜色,像这样:

myTextField.layer.borderColor = [[UIColor redColor] CGColor]; 

现在假设我有一个自定义控制这UIControl的子类。同样的代码不会改变边框的颜色,除非我也发出setNeedsLayout,就像这样:

[myControl setNeedsLayout]; 

是否有一个事件方法的地方,我需要实现,使没有setNeedsLayout这项工作?

+0

它应该没有任何额外的努力工作。你确定你在主线程中设置它吗? – 2013-02-22 22:54:15

回答

1

对于后代,下面是我自己解决问题的方法。

在我的.h文件:

@property (nonatomic, strong, setter = setBorderColor:) UIColor *borderColor; 

在我的.m文件:

- (void)setBorderColor:(UIColor *)clr { 
    borderColor = clr; 
    myControl.layer.borderColor = borderColor.CGColor; 
} 

就像一个魅力。

+0

解决了问题后,您可能需要返回并编辑问题(特别是标题),以便与您找到的内容更相关。我不认为你真的在寻找一个UIControl生命周期(与任何视图大致相同),这里的解决方案只涉及如何在不需要'-setNeedsDisplay'的情况下更新边框颜色。 – Caleb 2013-02-25 23:05:14

+0

我问到控制生命周期的原因是我怀疑我可以在预先存在的操作中完成这项工作。对于UIViewController类似于viewWillAppear。相反,当我需要的财产发生变化时,我不得不一起解决方案。我仍然认为应用新的边界会更适合生命周期方法,不是吗? – Axeva 2013-02-26 14:04:11