Develop
2015.01.03 14:45

[ios] UIView 계층구조

조회 수 1130 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

UIViewUtility (계층구조)

//
//  UIView+Helper.m
//  UIViewExtension
//
//  Created by KIM SUNG CHEOL on 12. 1. 9..
//  Copyright (c) 2012 individual. All rights reserved.
//

#import "UIViewUtility.h"


@implementation UIViewUtilty
#pragma mark -
#pragma mark 뷰계층구조
/**
 * @brief   레벨을 늘려가며 재귀적으로 뷰 트리를 탐색해 내려간다
 * @param   aView : 탐색을 시작할 뷰
 * @param   atIndent : 뷰 계층의 깊이
 * @param   into : 결과를 받을 스트링
 * @return  none
 * @remark  none
 * @see     displayViews:
 * @author  Sungcheol Kim(skyfe79@gmail.com)
 */
+(void) dumpView:(UIView *)aView 
        atIndent:(int)indent 
            into:(NSMutableString *)outString
{
    for(int i=0; i<indent; i++)
    {
        [outString appendString:@"	"];
    }
    [outString appendFormat:@"[%2d] %@
", indent, [[aView class] description]];
    for(UIView *view in [aView subviews])
        [self dumpView:view atIndent:indent+1 into:outString];
}

/**
 * @brief   레벨 0인 루트 뷰에서붙 트리를 재귀적으로 탐색한다
 * @param   aView : 탐색을 시작할 뷰
 * @return  NSString* : 탐색 결과 뷰의 계층 구조를 담은 문자열
 * @remark  none
 * @see     dumpView:atIndent:into:
 * @author  Sungcheol Kim(skyfe79@gmail.com)
 * @exeample
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    [button addSubview:[UIButton buttonWithType:UIButtonTypeCustom]];
    [self.view addSubview:button];
    [self.view addSubview:[UIButton buttonWithType:UIButtonTypeCustom]];
    NSLog(@"
%@",[self.view displayViews:self.view]);
 * @out
    [ 0] UIView
        [ 1] UIButton
            [ 2] UIButton
        [ 1] UIButton
 */
+(NSString *)displayViews:(UIView *)aView
{
    NSMutableString *outString= [[NSMutableString alloc] init];
    [self dumpView:aView atIndent:0 into:outString];
    return [outString autorelease];
}


#pragma mark - 
#pragma mark 뷰탐색
/**
 * @brief   뷰의 하위 뷰에 해당하는 모든 자손을 배열로 반환한다
 * @param   aView : 시작할 뷰
 * @return  NSArray : 모든 자손 뷰 배열
 * @remark  none
 * @see     none
 * @author  Sungcheol Kim(skyfe79@gmail.com)
 */
+(NSArray *)allSubViews:(UIView *)aView
{
    NSArray *result = [aView subviews];
    for(UIView *view in [aView subviews])
    {
        NSArray *subviews = [UIViewUtilty allSubViews:view];
        if(subviews)
        {
            result = [result arrayByAddingObjectsFromArray:subviews];
        }
    }
    return result;
}
/**
 * @brief   애플리케이션의 모든 뷰를 반환한다
 * @param   void
 * @return  애플리케이션의 모든 뷰를 담은 배열
 * @remark  none
 * @see     none
 * @author  Sungcheol Kim(skyfe79@gmail.com)
 */
+(NSArray *)allApplicationViews
{
    NSArray *result = [[UIApplication sharedApplication] windows];
    for(UIWindow *window in [[UIApplication sharedApplication] windows])
    {
        NSArray *subviews = [UIViewUtilty allSubViews:window];
        if(subviews)
        {
            result = [result arrayByAddingObjectsFromArray:subviews];
        }
    }
    return result;
}
/**
 * @brief   UIWindow로부터 해당 뷰까지 부모 뷰의 배열을 반환한다
 * @param   aView : 경로를 얻을 뷰
 * @return  경로를 담은 배열
 * @remark  none
 * @see     none
 * @author  Sungcheol Kim(skyfe79@gmail.com)
 */
+(NSArray *)pathToView:(UIView *)aView
{
    NSMutableArray *array = [NSMutableArray arrayWithObject:aView];
    UIView      *view = aView;
    UIWindow    *window = aView.window;
    while (view!=window)
    {
        view = [view superview];
        [array insertObject:view atIndex:0];
    }
    return array;
}
@end


[출처] https://github.com/skyfe79/iOSToolkit/blob/master/UIView/UIViewUtility.m

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
105 Develop [ios] APNS, Remote Push 사용자가 수신을 동의했는지 확인하기 hooni 2018.10.19 1263
104 Develop [ios] UIWebView를 이용한 로컬 HTML 파일 표시 file hooni 2015.01.02 1240
103 Develop 사이버보안실무 발표자료 (2017.06.08) file hooni 2017.06.05 1218
102 Develop [c] Mac OS 에 gmp(gmp.h) 라이브러리 설치 hooni 2016.10.03 1212
101 Develop [ios] NavigationController 에서 왼쪽(back) 버튼 후킹하기 hooni 2015.10.23 1188
100 Develop [ios] 코코아 프로그래밍의 네이밍 룰(명명 규칙) hooni 2017.05.11 1187
99 Develop [ios] Facebook Cache 갱신하는 함수 file hooni 2017.02.27 1186
98 Develop [js] Click button copy to clipboard hooni 2018.04.05 1179
97 Develop [vim] vim 명령으로 &#65279; 문자 제거하기 (remove 65279 bomb) hooni 2021.02.03 1168
96 Develop [ios] Facebook SDK 로그인 설명 file hooni 2017.04.19 1164
95 Develop [android] Calling activity function from separate class hooni 2016.11.15 1161
94 Develop [ios] Objective-C Types & Storage Capacity hooni 2015.07.22 1159
93 Develop macOS에 node, npm 설치하기 (homebrew) file hooni 2021.11.06 1149
92 Develop GPL, AGPL, MPL,.. 한눈에 보는 오픈소스SW 라이선스 file hooni 2014.10.14 1146
91 Develop [coding] Find all anagrams in a string hooni 2017.06.27 1146
» Develop [ios] UIView 계층구조 hooni 2015.01.03 1130
Board Pagination Prev 1 ... 45 46 47 48 49 ... 53 Next
/ 53