View Programming Guide for IOS:Views笔记
2015-01-15 17:22
260 查看
1.执行画图代码:
“当前绘图上下文”只在执行视图的drawRect方法期间才有效。UIKit有可能会在后续调用drawRect方法时声称一个新的视图上下文,所以你不能试图去缓存这个“当前绘图上下文”并在之后使用它。
如果你确定你的视图图画代码以opaqu(不透明)的方式覆盖全部的界面,你可以通过设置view的opaque属性为YES来提高系统性能。当标记视图为不透明时,UIKit就不会画那些在此视图下边的视图。这不仅减少画图的时间,也减少了混合视图的工作。然而,只有当你能确定此视图是不透明时(alpha=1.0),才可以把opaque属性设置为YES。
另外一个提升画图性能的方式,特别是在scrolling当中,设置clearsContextBeforeDrawing 为NO。当参数设置为YES时,调用drawRect:前UIKit自动用透明黑色填充rect区域。设置为NO消除了这个操作,同时开发人员需要确认自己填充这块的区域。
2.响应事件
UIView是UIResponder的子类。可以通过addGestureRecognizer:和
touchesBegan:withEvent:
touchesMoved:withEvent:
touchesEnded:withEvent:
touchesCancelled:withEvent:
等接收事件。
可以设置multipleTouchEnabled参数来使UIView接收多点触摸。有些UIKit的控件本身就不支持事件。
userInteractionEnabled设置为YES可以让这些控件(比如UILabel)支持事件响应。同时,也可以通过设置
UIApplication的beginIgnoringInteractionEvents和endIgnoringInteractionEvents方法来使整个应用不接收或者重新开始接收事件。
注意:当UIView的动画在执行的时候往往会使触摸事件失效。可以通过配置动画参数来覆盖这个行为。UIKit使用
hitTest:withEvent:和pointInside:withEvent:方法来确定一个触摸事件是否发生在指定区域内。大多数时候我们不需要重载这个方法,但是有时候也会需要,比如:阻止子视图对捕捉到的事件做操作。
“当前绘图上下文”只在执行视图的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); |
} |
另外一个提升画图性能的方式,特别是在scrolling当中,设置clearsContextBeforeDrawing 为NO。当参数设置为YES时,调用drawRect:前UIKit自动用透明黑色填充rect区域。设置为NO消除了这个操作,同时开发人员需要确认自己填充这块的区域。
2.响应事件
UIView是UIResponder的子类。可以通过addGestureRecognizer:和
touchesBegan:withEvent:
touchesMoved:withEvent:
touchesEnded:withEvent:
touchesCancelled:withEvent:
等接收事件。
可以设置multipleTouchEnabled参数来使UIView接收多点触摸。有些UIKit的控件本身就不支持事件。
userInteractionEnabled设置为YES可以让这些控件(比如UILabel)支持事件响应。同时,也可以通过设置
UIApplication的beginIgnoringInteractionEvents和endIgnoringInteractionEvents方法来使整个应用不接收或者重新开始接收事件。
注意:当UIView的动画在执行的时候往往会使触摸事件失效。可以通过配置动画参数来覆盖这个行为。UIKit使用
hitTest:withEvent:和pointInside:withEvent:方法来确定一个触摸事件是否发生在指定区域内。大多数时候我们不需要重载这个方法,但是有时候也会需要,比如:阻止子视图对捕捉到的事件做操作。
相关文章推荐
- 《View Programming Guide for iOS》笔记
- Scroll View Programming Guide for iOS 笔记
- Scroll View Programming Guide for iOS 笔记
- View Programming Guide for iOS ---- iOS 视图编程指南(四)---Views
- 《View Controller Programming Guide for iOS》笔记
- View Programming Guide for IOS:View and Window Architecture笔记
- View Programming Guide for iOS 学习笔记_2
- Table View Programming Guide for iOS---(一)---About Table Views in iOS Apps
- Scroll View Programming Guide for iOS 笔记
- 《View Controller Programming Guide for iOS》笔记
- Collection View Programming Guide for iOS---(一)----About iOS Collection Views
- iOS 笔记 《View Programming Guide for iOS:Introduction》
- Table View Programming Guide for iOS---(四)---Navigating a Data Hierarchy with Table Views
- View Programming Guide for iOS 学习笔记_3
- View Programming Guide for iOS 学习笔记_1
- 《View Programming Guide for iOS》笔记
- 《View Controller Programming Guide for iOS》笔记
- View Controller Programming Guide for iOS---(七)---Resizing the View Controller’s Views
- Scroll View Programming Guide for iOS 笔记
- Table View Programming Guide for iOS---(二)----Table View Styles and Accessory Views