標籤:style blog color os io ar div cti log
基礎要點:
1,畫圖不可以在 ViewController 裡,而是應該在一個 UIView 的子類中,比如建立一個 DrawView 繼承自 UIView。
2,覆蓋 UIView 的 drawRect 方法,使得它畫符合需要的圖。
#import <UIKit/UIKit.h>@interface DrawView : UIView@end/*****************************/#import "DrawView.h"@implementation DrawViewstatic int height = 0;- (void)drawRect:(CGRect)rect{ NSLog(@"drawRect"); height = height + 10; CGRect bounds = [self bounds]; [[UIColor yellowColor] set]; UIRectFill(bounds); CGRect square = CGRectMake(50, 50, 100, height); [[UIColor greenColor] set]; UIRectFill(square); [[UIColor blackColor] set]; UIRectFrame(square);}@end
3,畫圖時通過對 DrawView 的一個對象調用 ([view setNeedsDisplay];)來自動調用 drawRect 來畫圖。View 需要是一個 DrawView 對象。
- (IBAction)drawView:(id)sender{ NSLog(@"drawView"); [view setNeedsDisplay];}
4,注意,一下幾種情況 drawRect 不被調用:
(1)當view的frame的size為(0,0)的時候,系統是不會執行drawrect方法的。
(2)當這個view沒有superview的情況(view 為最外層的 UIView),依然不會執行drawrect
補充說明:當view.hidden=YES或者view.frame超出邊界的情況依然會調用drawrect方法,由此可以看出不執行drawrect方法之就有這兩種情況。
iOS 畫圖基礎