我有我自己的最小視圖類這樣的:drawLayer:inContext的不叫
- (void) awakeFromNib
{
NSLog(@"awakeFromNib!");
[self.layer setDelegate:self];
[self.layer setFrame:CGRectMake(30, 30, 250, 250)];
self.layer.masksToBounds = YES;
self.layer.cornerRadius = 5.0;
self.layer.backgroundColor = [[UIColor redColor] CGColor];
[self setNeedsDisplay];
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
NSLog(@"drawing!");
}
drawLayer:inContext的永遠不會叫,但我可以看到該層爲紅色,圓角矩形。我錯過了什麼?
編輯:蘋果文檔
可以繪製的內容爲你的層, 或更好的封裝通過創建實現的 下列方法之一 委託類設置 層的內容畫面:DisplayLayer中: 或drawLayer:inContext :.
實現委託方法繪製 內容不會自動 導致圖層使用該實現進行繪製。相反,你必須 明確地告訴了一層實例 重新緩存中的內容,或者通過 發送一個setNeedsDisplay或 setNeedsDisplayInRect:消息,或者通過 其needsDisplayOnBoundsChange 屬性設置爲YES。
而且
drawLayer:inContext的:
如果定義,缺省實現drawInContext的 稱爲:。