2013-02-21 265 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