我有一個基於UIView的控件,需要根據控件的各種標準和屬性調整大小。我不確定我做這件事的方式是否是最好的方式,但迄今爲止,這是我發現似乎可行的唯一方法。因爲控件的大小取決於各種屬性,所以我無法在構造函數中設置大小。iPhone:在drawRect中調整大小:
我有一個名爲setupControl的方法:它包含所有代碼來完成基於屬性集的設置。我不想setupControl:手動調用,所以在我的drawRect檢測是否我需要調用它,然後排隊這樣的選擇:
[self performSelector:@selector(setupControl)withObject:self afterDelay:0];
return;
在setupControl的底部:當時我做的事:
[self setNeedsDisplay];
self.hidden = NO;
我也重寫了initWithFrame:和initWithDecoder:構造函數,以便它們將UIView設置爲隱藏,直到執行設置代碼。隨着控件調整大小,消除顯示屏上的任何「閃爍」的想法。
正如我所說的,這工作正常,可以繪製控件的大小是xib文件,然後在運行時將自己設置爲正確的大小。
我的問題是這種排隊選擇器的方法,退出drawRect:然後使用setNeedsDisplay是唯一的方法來做到這一點? O有沒有發現我可以重寫的一些方法?或者是其他東西?
您是否考慮過不使用IB並在代碼中做所有事情? – 2010-09-26 14:39:15
我只使用IB來佈置使用此控件的視圖。控制本身是基於代碼的。此外,該控件可作爲其他程序使用的框架的一部分,因此我不能認爲它是基於代碼或IB的。我唯一想到的其他選擇是刪除調整大小的代碼,並期望開發人員能夠正確調整控件的大小。使它更簡單:-) – drekka 2010-09-26 16:13:42