要求:方案简单易行,用户无感知(不能占用过高的 CPU)背景:需要封装一个视图控件,该控件需要根据陀螺仪进行频繁的重绘。
目前需要考虑以下情况:
alpha
hidden
作为UIScrollView 的子视图,被滚动到视图范围外
电话或者进入后台
被其它视图遮挡
学习是最好的投资!
alpha,hidden———这两个UIView获取自己的属性就可以知道了UIScrollView子视图———可以通过[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];获取到UIView相对于屏幕的frame,通过具体数据也可以判断是否在视图范围内电话或者进入后台———通过实现appdelegate中的相应代理方法,代理方法执行后发个通知,让UIView接收通知也可以知道被其他视图遮挡———这个东西就自己控制吧,自己写的app,什么时候会出现遮挡自己肯定是知道的
[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
/* Return true if rect2' is contained in rect1', false otherwise. `rect2' is contained in rect1' if the union of rect1' and `rect2' is equal to `rect1'. */
rect2' is contained in
rect1' if the union of
CG_EXTERN bool CGRectContainsRect(CGRect rect1, CGRect rect2)
CG_AVAILABLE_STARTING(__MAC_10_0, __IPHONE_2_0);
你这不是都列出来了吗?
alpha,hidden———这两个UIView获取自己的属性就可以知道了
UIScrollView子视图———可以通过
[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
获取到UIView相对于屏幕的frame,通过具体数据也可以判断是否在视图范围内电话或者进入后台———通过实现appdelegate中的相应代理方法,代理方法执行后发个通知,让UIView接收通知也可以知道
被其他视图遮挡———这个东西就自己控制吧,自己写的app,什么时候会出现遮挡自己肯定是知道的
/* Return true if
rect2' is contained in
rect1', false otherwise. `rect2'is contained in
rect1' if the union of
rect1' and `rect2' is equal to`rect1'. */
CG_EXTERN bool CGRectContainsRect(CGRect rect1, CGRect rect2)
你这不是都列出来了吗?