要求:方案简单易行,用户无感知(不能占用过高的 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];
/* 如果 rect2' is contained in rect1', false otherwise. `rect2' is contained in rect1' if the union of rect1' 和 `rect2' 等於 `rect1',則傳回 true。 */
rect2' is contained in
rect1' if the union of
CG_EXTERN bool CGRectContainsRect(CG矩形 矩形1, CG矩形 矩形2)
你這不是都列出來了嗎?
alpha,hidden———這兩個UIView取得自己的屬性就可以知道了
UIScrollView子視圖———可以透過
[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
取得到UIView相對於螢幕的frame,透過具體資料也可以判斷是否在視圖範圍內電話或進入後台———透過實現appdelegate中的對應代理方法,代理方法執行後發個通知,讓UIView接收通知也可以知道
被其他視圖遮擋———這個東西就自己控制吧,自己寫的app ,什麼時候會出現遮擋自己一定是知道的
/* 如果
rect2' is contained in
rect1', false otherwise. `rect2'is contained in
rect1' if the union of
rect1' 和 `rect2' 等於`rect1',則傳回 true。 */
CG_EXTERN bool CGRectContainsRect(CG矩形 矩形1, CG矩形 矩形2)
雷雷你這不是都列出來了嗎?