要求:方案简单易行,用户无感知(不能占用过高的 CPU)背景:需要封装一个视图控件,该控件需要根据陀螺仪进行频繁的重绘。
目前需要考虑以下情况:
alpha
hidden
作为UIScrollView 的子视图,被滚动到视图范围外
电话或者进入后台
被其它视图遮挡
学习是最好的投资!
alpha、hidden — これら 2 つの UIView は、独自のプロパティを取得することで知ることができます。 UIScrollView サブビュー — [scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow]; を通じて画面に対する UIView のフレームを取得でき、それを判断することもできます。 がビュー範囲内のバックグラウンドを呼び出すか入るか - appdelegate で対応するプロキシ メソッドを実装すると、プロキシ メソッドの実行後に通知が送信されるため、UIView は通知を受信し、 を認識できるようになります。 🎜> は他のビューによってブロックされています - これは自分で制御するだけです。自分でアプリを作成すれば、いつブロックされるかが確実にわかります。
[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
/* rect2' is contained in rect1' の場合は true、それ以外の場合は false を返します。 `rect2' は rect1' if the union of rect1' に含まれており、`rect2' は `rect1' に等しいです。 */
rect2' is contained in
rect1' if the union of
CG_EXTERN bool CGRectContainsRect(CGRectect1, CGRectrect2)
全部リストアップしたんじゃないの?
alpha、hidden — これら 2 つの UIView は、独自のプロパティを取得することで知ることができます。
UIScrollView サブビュー —
[scrollView convertRect:self.frame toView:[UIApplication sharedApplication].keyWindow];
を通じて画面に対する UIView のフレームを取得でき、それを判断することもできます。がビュー範囲内のバックグラウンドを呼び出すか入るか - appdelegate で対応するプロキシ メソッドを実装すると、プロキシ メソッドの実行後に通知が送信されるため、UIView は通知を受信し、
を認識できるようになります。 🎜> は他のビューによってブロックされています - これは自分で制御するだけです。自分でアプリを作成すれば、いつブロックされるかが確実にわかります。
/*
rect2' is contained in
rect1' の場合は true、それ以外の場合は false を返します。 `rect2'は
rect1' if the union of
rect1' に含まれており、`rect2' は`rect1' に等しいです。 */
CG_EXTERN bool CGRectContainsRect(CGRectect1, CGRectrect2)
リーリー全部リストアップしたんじゃないの?