Custom UIView,要自定义,需要重写:
- (id)initWithFrame: (CGRect) frame //依照Frame建立新的View,建立出來的View要通过addSubview加入到父View中。
-(void)drawRect:(CGRect)rect //自画,永远不要直接调用drawRect,而要通过 [self setNeedDisplay],由系统再去异步调用drawRect。并且必须在主线程中调用。
自定义UIView不能使用nib文件设计界面,必须在程序中用代码创建各个控件,否则即使在主线程中调用setNeedDisplay也是不起作用。
大致步骤
1) 新建一个UIView的子类(@interface HypnosisView : UIView)
2) 自定义绘图函数:(void) drawRect:(CGRect)rect
◆确定绘图范围:CGRect bounds=[self bounds]
◆获得CGContext, CGContextRef context=UIGraphicsGetCurrentContext();
◆进行绘图操作
3) 将新视图绑定到主窗口
◆在HypnosisterAppDelegate中添加一个成员变量HypnosisView *view;
◆确定绘图范围
◆在didFinishLaunchingWithOptions中增加子视图:[_window addSubview:view];
◆进行显示 [_window makeKeyAndVisible];
待确定事项:
1) CGContextStrokePath的功能
2) makeKeyAndVisible消息的功能