[iOS] CGGeometry (CGRectContainsRect, CGRectIntersectsRect) 알아보기

AppleDeveloper (CGGeometry) CGPoint, CGRect 데이터 구조를 포함한 함수들의 집합입니다.

가장 기본적으로 이미들 사용하고있는 CGPointMake, CGRectMake, CGSizeMake 등 을 사용하고 있었으며, 이번에 프로젝트에서 우연찬게 CGRectContainsRect(return BOOL), CGRectIntersectsRect(return BOOL) 을 사용할 기회가 있어서 정리와 함께 포스팅하려고 한다.

CGRectContainsRect : 사이트 참조

bool CGRectContainsRect(CGRect rect1, CGRect rect2);
rect1 : 해당 정보에 포함되어있는지 검사할 대상
rect2 : rect1에 포함하는지 검사하려고 하는 대상

CGRectIntersectsRect : 사이트 참조

bool CGRectIntersectsRect(CGRect rect1, CGRect rect2);
rect1 : 해당 정보에 일부가 포함되어있는지 검사할 대상
rect2 : rect1에 일부가 포함하는지 검사하려고 하는 대상


우선 간단하게 Storyboard 를 통해 빨강View, 초록View, 하얀View 3가지를 만들고,
1. 초록View빨강View는 약간 걸친상태
2. 빨강View하얀View는 빨강에 포함되어있는상태
3. 초록View하얀View는 아예 포함되어있지 않은상태.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
// 1. 초록View 와 빨강View 일부겹쳤는지, 완전겹쳤는지 확인.
    if (CGRectContainsRect(self.greenView.frame, self.redView.frame)) {
        NSLog(@"빨강View는 초록View에 완전 포함 되어있음.");
    } else {
        if (CGRectIntersectsRect(self.greenView.frame, self.redView.frame)) {
            NSLog(@"빨강View는 초록View에 일부 포함 되어있음.");
        } else {
            NSLog(@"빨강View는 초록View에 완전 포함 되어있지 않음.");
        }
    }
    
    // 2. 빨강View 와 하얀View 일부겹쳤는지, 완전겹쳤는지 확인.
    if (CGRectContainsRect(self.redView.frame, self.whiteView.frame)) {
        NSLog(@"하얀View는 빨강View에 완전 포함 되어있음.");
    } else {
        if (CGRectIntersectsRect(self.redView.frame, self.whiteView.frame)) {
            NSLog(@"하얀View는 빨강View에 일부 포함 되어있음.");
        } else {
            NSLog(@"하얀View는 빨강View에 완전 포함 되어있지 않음.");
        }
    }
    
    // 3. 초록View 와 하얀View 일부겹쳤는지, 완전겹쳤는지 확인.
    if (CGRectContainsRect(self.greenView.frame, self.whiteView.frame)) {
        NSLog(@"하얀View는 초록View에 완전 포함 되어있음.");
    } else {
        if (CGRectIntersectsRect(self.greenView.frame, self.whiteView.frame)) {
            NSLog(@"하얀View는 초록View에 일부 포함 되어있음.");
        } else {
            NSLog(@"하얀View는 초록View에 완전 포함 되어있지 않음.");
        }
    }
cs

위와 같이 작성하고 실행시켜보면 아래와 같은 결과가 표현됩니다.


댓글