View Programming Guide for IOS:Views笔记

1.执行画图代码:
“当前绘图上下文”只在执行视图的drawRect方法期间才有效。UIKit有可能会在后续调用drawRect方法时声称一个新的视图上下文,所以你不能试图去缓存这个“当前绘图上下文”并在之后使用它。

- (void)drawRect:(CGRect)rect {

    CGContextRef context = UIGraphicsGetCurrentContext();

    CGRect    myFrame = self.bounds;

 

    // Set the line width to 10 and inset the rectangle by

    // 5 pixels on all sides to compensate for the wider line.

    CGContextSetLineWidth(context, 10);

    CGRectInset(myFrame, 5, 5);

 

    [[UIColor redColor] set];

    UIRectFrame(myFrame);

}

如果你确定你的视图图画代码以opaqu(不透明)的方式覆盖全部的界面,你可以通过设置view的opaque属性为YES来提高系统性能。当标记视图为不透明时,UIKit就不会画那些在此视图下边的视图。这不仅减少画图的时间,也减少了混合视图的工作。然而,只有当你能确定此视图是不透明时(alpha=1.0),才可以把opaque属性设置为YES。
另外一个提升画图性能的方式,特别是在scrolling当中,设置 clearsContextBeforeDrawing  为NO。当参数设置为YES时,调用drawRect:前UIKit自动用透明黑色填充rect区域。设置为NO消除了这个操作,同时开发人员需要确认自己填充这块的区域。

2.响应事件
UIView是UIResponder的子类。可以通过addGestureRecognizer:和
等接收事件。
可以设置 multipleTouchEnabled参数来使UIView接收多点触摸。有些UIKit的控件本身就不支持事件。

userInteractionEnabled设置为YES​可以让这些控件(比如UILabel)支持事件响应。同时,也可以通过设置

UIApplicationbeginIgnoringInteractionEvents和endIgnoringInteractionEvents方法来使整个应用不接收或者重新开始接收事件。

注意:当UIView的动画在执行的时候往往会使触摸事件失效。可以通过配置动画参数来覆盖这个行为。UIKit使用

hitTest:withEvent:和​pointInside:withEvent:方法来确定一个触摸事件是否发生在指定区域内。大多数时候我们不需要重载这个方法,但是有时候也会需要,比如:阻止子视图对捕捉到的事件做操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值