7

タッチ移動メソッドを使用して、UIView - "A" (サブビュー) を別の UIView - "B" (スーパービュー) 内に移動しようとしています。UIView をスーパービューの外に移動できます。スーパービューの境界内で UIView を制限したい。サブビューがスーパービューの可視矩形内にあるかどうかをテストする一般的な方法がある方法はありますか???

4

4 に答える 4

6

clipsToBounds メソッドを使用するか、CGRectContainsRect

youSuperView.clipsToBounds = YES;

お役に立てると思います

于 2012-08-10T06:06:24.367 に答える
6

サブビュー (viewA) の動きを常にスーパービュー (viewB) に完全に含まれるように制限したいようです。CGRectContainsRect は正しい答えですが、サブビュー フレームはそのスーパービューの座標系で指定されるため、慎重に適用する必要があります。

// inside touches moved, compute the newViewAFrame based on the movement
// but only assign it if it meets the containment constraint:

if (CGRectContainsRect(viewB.bounds, newViewAFrame)) {
    viewA.frame = newViewAFrame;
}

チェックで viewB.frame について触れていないことに注意してください。親におけるviewBの位置は、viewBにviewAが含まれているかどうかには関係ありません。

于 2012-08-10T07:28:57.443 に答える
0

スウィフト 2.2: let rect1 = CGRect(...) let rect2 = CGRect(...)

これを確認する方法があります -CGRectContainsRect(rect1, rect2)

于 2012-08-10T06:03:23.210 に答える