Contents

Develop
2015.01.03 14:45

[ios] UIView 계층구조

조회 수 1118 댓글 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
번호 분류 제목 글쓴이 날짜 조회 수
1173 Develop '2014 모바일 개발 트렌드' 발표자료입니다. file hooni 2014.10.02 974
1172 System/OS Apache CORS 설정 1 hooni 2020.09.04 2702
1171 Develop Aspect Oriented Programming in Objective-C hooni 2015.05.18 672
1170 System/OS asx미디어 정보 기록.. hooni 2003.04.23 20533
1169 System/OS CentOS 6.5 USB 설치 6 file hooni 2013.12.18 37672
1168 System/OS CentOS 에서 Cacti 설치하기 hooni 2015.01.02 1758
1167 System/OS Configure Postfix to Use Gmail SMTP on Ubuntu 18.04 file hooni 2020.02.07 1240
1166 Develop DDay Memo 1.9.4 소스코드 secret hooni 2015.10.03 0
1165 Etc EBS [수학영역] 미적분과 통계 기본 - 정규분포의 의미와 특징은? hooni 2015.04.20 1001
1164 System/OS Enable Safari Hidden Debug Menu in Mac OS X file hooni 2017.02.07 1133
1163 System/OS Enable the Develop Menu in Safari file hooni 2017.02.07 1061
1162 Develop GCM 사용하기 2 (단말에 GCM 구현하기) file hooni 2013.07.06 23248
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 98 Next
/ 98