iOS 응용 개발 에서 autoresizing 사이즈 가 자동 으로 속성 에 적응 하 는 용법 을 자세히 설명 합 니 다.

8482 단어 iOSautoresizing
선언:지금 은 예전 처럼 한 사이즈 만 있 는 것 이 아니 라 현재 가장 적은 아이 폰 개발 에 최소한 세 사이즈 가 필요 하 다.그래서 예전 에 우 리 는 하 드 좌 표를 사용 하여 각 컨트롤 의 위 치 를 설정 할 수 있 었 지만 지금 은 안 됩 니 다.우 리 는 어 울 려 야 합 니 다.UI 두 세트 나 두 세트 이상 의 UI 를 사용 할 수 있다 고 말 할 수 있 지만 그렇게 효율 적 이지 않 고 디자인 에 부합 되 지 않 습 니 다.iOS 에는 두 가지 자동 레이아웃 이기 가 있 습 니 다.autoresizing 과 autolayot(autolayot 는 IOS 6 이후 에 추 가 됩 니 다).autoresizing 은 UIView 의 속성 으로 항상 존재 하고 사용 도 간단 하지만 autolayot 만큼 강하 지 않 습 니 다.만약 당신 의 인터페이스 가 비교적 간단 하고 요구 하 는 세부 사항 이 그렇게 높 지 않다 면,당신 은 autoresizing 을 사용 하여 자동 레이아웃 을 할 수 있 습 니 다.다음은 autoresizing 에 대해 논의 하 겠 습 니 다.
0.autoresizing 사용 전 설명:
UIView Autoresizing 은 매 거 진 형식 입 니 다.기본 값 은 UIView Autoresizing None 입 니 다.즉,어떠한 처리 도 하지 않 습 니 다.

typedef NS_OPTIONS(NSUInteger, UIViewAutoresizing) {
    UIViewAutoresizingNone                 = 0,
    UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
    UIViewAutoresizingFlexibleWidth        = 1 << 1,
    UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
    UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
    UIViewAutoresizingFlexibleHeight       = 1 << 4,
    UIViewAutoresizingFlexibleBottomMargin = 1 << 5
};
각 속성 설명:
201632390817501.png (731×400)
Storyboard/Xib 를 자주 사용 하여 autoresizing 을 설정 하면 코드 설정 autoresizing 을 바 꾸 면 잘못된 문 제 를 이해 하기 쉽다 는 것 을 설명 합 니 다.예 를 들 어 UIView Autoresizing Flexible TopMargin 은 상단 거리 가 변 하지 않 는 다 고 오 해 를 받 을 수 있 지만 사실은 바닥 거리 가 변 하지 않 는 다.이 해결 방법 도 간단 합 니 다.코드 를 사용 하 는 것 과 Storyboard 를 사용 하 는 것 을 autoresizing 으로 설정 하 는 것 이 반대 입 니 다.이렇게 기억 하면 됩 니 다.
autoresizing 조합 사용:
즉,매 거 진 값 은|격 리 를 사용 할 수 있 고 여러 값 의 기능 을 가지 기 때문에 서로 다른 장면 에 대해 서로 다른 변 화 를 할 수 있다.예 를 들 면:
UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin
view 의 너 비 는 부모 보기 의 너비 비율 에 따라 크기 를 조정 하고 부모 보기 의 상단 거리 에서 변 하지 않 습 니 다.
다른 조합 은 비슷 하 니 일일이 열거 하지 않 겠 습 니 다.
주의:
1)view 의 autoresizes Subviews 속성 이 yes 일 때(기본 값 yes)autoresizing 이 적 용 됩 니 다.
2)XCODE 6 부터 Storyboard&Xib 는 기본적으로 자동 레이아웃 이기 때문에 수 동 으로 조정 해 야 autoresizing 을 사용 할 수 있 습 니 다.
그림 과 같이 구체 적 인 조작(Storyboard 파일 을 열 면 아래 그림 의 화면 을 볼 수 있 습 니 다):
201632390848702.jpg (502×694)
다음은 간단 한 예 를 써 서 여러분 에 게 더욱 직관 적 인 이 해 를 드 리 고 본문 마지막 에 데모 다운로드 주 소 를 첨부 할 것 입 니 다.계속 아래 를 보 세 요.
Demo:
1)상단 거리 부모 보기 거리 가 변 하지 않 음
2)폭 을 부모 보기 비율 로 늘 리 기
3)view 와 부모 보기 의 왼쪽 거리 와 오른쪽 거 리 는 변 하지 않 습 니 다.
201632390909858.png (564×540)
1.사용 코드(코드)제어 autoresizingMask
다음은 프로젝트 에 사용 되 는 매크로 입 니 다:

#define topSpace 64
#define kMargin 20
 
#define kTopViewHeight 44
#define kTopViewWidth 300
 
#define kTextLabelWidth 200
#define kTextLabelHeight 30
적합 한 코드 를 만 들 지 않 았 습 니 다:

// Iphone4(320, 480) ,
// : Iphone4(320, 480) , !
UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(kMargin, topSpace, kTopViewWidth, kTopViewHeight)];
CGFloat textLabelTop = (topView.frame.size.width - kTextLabelWidth) / 2;
CGFloat textLabelWidth = (topView.frame.size.height - kTextLabelHeight) / 2;
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(textLabelTop, textLabelWidth, kTextLabelWidth, kTextLabelHeight)];
 
//
[textLabel setText:@"Garvey"];
[textLabel setTextAlignment:NSTextAlignmentCenter];
 
//
[topView setBackgroundColor:[UIColor redColor]];
[textLabel setTextColor:[UIColor whiteColor]];//
[topView addSubview:textLabel];
[self.view addSubview:topView];
다음 과 같이 표 시 됩 니 다:
201632390930508.jpg (244×188)
autoresizing 을 사용 하여 인터페이스 적합:
보충:다른 장치 크기 를 인터페이스 에 있 는 컨트롤 로 초기 화 할 수 있 습 니 다.autoresizing 은 부모 보기 의 변화 로 변 하기 때 문 입 니 다.

// Iphone4(320, 480) ,
// : Iphone4(320, 480) , !
UIView *topView = [[UIView alloc] initWithFrame:CGRectMake(kMargin, kTopSpace, kTopViewWidth, kTopViewHeight)];
CGFloat textLabelTop = (topView.frame.size.width - kTextLabelWidth) / 2;
CGFloat textLabelWidth = (topView.frame.size.height - kTextLabelHeight) / 2;
UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(textLabelTop, textLabelWidth, kTextLabelWidth, kTextLabelHeight)];
 
//
[textLabel setText:@"Garvey"];
[textLabel setTextAlignment:NSTextAlignmentCenter];
 
//
[topView setBackgroundColor:[UIColor redColor]];
[textLabel setTextColor:[UIColor whiteColor]];
 
// (topView)
[textLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];
// View , 、
[topView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleLeftMargin];
 
//
[topView addSubview:textLabel];
[self.view addSubview:topView];
 
// : topView , , autoresizing !
CGFloat topViewWidth = kUIScreen.size.width - kMargin * 2;
[topView setFrame:CGRectMake(kMargin, kTopSpace, topViewWidth, kTopViewHeight)];
마지막 표시:
201632390950869.png (564×540)
2.Storyboard 에서 autoresizing Mask 제어
autoresizing Mask 는 story board 에서 이 루어 지 든 코드 로 이 루어 지 든 본질 적 으로 6 개의 선 이다.
storyboard 에서 autoresizing Mask 를 사용 하려 면 Autolayot 를 사용 하지 않 아야 합 니 다.
그림:
201632391014574.png (488×124)
그림 에는 모두 여섯 개의 선(상하 좌우 에서 외곽 까지 의 거리 선과 내부 의 두 개의 선)이 있다.
상하 좌우 선 중 하 나 를 선택 하면 부모 컨트롤 의 경계 거리 가 변 하지 않 음 을 나타 낸다.
예 를 들 어 그림 에서 왼쪽 과 위의 선 을 선택 하면 파란색 view 거리 self.view 의 왼쪽 경계 와 위의 경계 거리 가 변 하지 않 음 을 나타 낸다.
상하 좌우 선 을 동시에 선택 하면 행동 은 왼쪽 선 을 선택 한 것 과 같 습 니 다.즉,기본 행동 입 니 다.
하위 컨트롤 크기 가 부모 컨트롤 크기 에 따라 바 뀌 려 면 내부 의 두 선 을 사용 해 야 합 니 다.내부 의 선 은 컨트롤 이 수평 과 수직 방향 에서 늘 어 날 수 있 도록 허용 한 다 는 것 을 나타 낸다.내부 선 이 선택 되 지 않 으 면 컨트롤 이 늘 어 나 는 것,즉 고정 크기 를 원 하지 않 는 다 는 뜻 이다.
즉,주위 의 선 은 고정 거 리 를 나타 내 고 내부 의 선 은 스 트 레 칭 을 허용 한 다 는 뜻 이다.
코드 로 autoresizingMask 를 설정 하면 view 의 autoresizingMask 속성 이 매 거 진 것 을 발견 할 수 있 습 니 다.

UIViewAutoresizingNone                 = 0,
UIViewAutoresizingFlexibleLeftMargin   = 1 << 0,
UIViewAutoresizingFlexibleWidth        = 1 << 1,
UIViewAutoresizingFlexibleRightMargin  = 1 << 2,
UIViewAutoresizingFlexibleTopMargin    = 1 << 3,
UIViewAutoresizingFlexibleHeight       = 1 << 4,
UIViewAutoresizingFlexibleBottomMargin = 1 << 5
첫 번 째 는 None 을 제외 하고 나머지 여섯 개 는 story board 의 여섯 개의 선 에 대응 합 니 다.
위 에 조심 하 세 요.

UIViewAutoresizingFlexibleWidth
UIViewAutoresizingFlexibleHeight
이것 은 storyboard 에 autoresizing Mask 를 설치 한 내부 의 두 안테나 와 일치 합 니 다.늘 어 날 수 있 는 너비 와 높이 입 니 다.
나머지 는 주의해 야 한다.

UIViewAutoresizingFlexibleLeftMargin
UIViewAutoresizingFlexibleRightMargin 
UIViewAutoresizingFlexibleTopMargin   
UIViewAutoresizingFlexibleBottomMargin
story board 에서 주변 선 을 선택 하면 거리 가 고정 되 어 있 음 을 표시 합 니 다.예 를 들 어 저 는 왼쪽 선 을 선 택 했 습 니 다.그러면 왼쪽 거 리 를 고정 시 키 고 싶다 는 뜻 입 니 다.그래서 코드 에서 UIView Autoresizing FlexibleRightMargin 을 선택해 야 합 니 다.즉,오른쪽 거리 가 고정 되 지 않 았 다 는 뜻 입 니 다.그러면 기본 왼쪽 거 리 는 고정 되 어 있 습 니 다.
autoresizingMask 의 단점 은 부모 컨트롤 과 하위 컨트롤 간 의 관계 만 보장 할 수 있 고 동급 컨트롤 간 의 관 계 를 보장 할 수 없다 는 것 이다.즉,일부 수요 가 있 기 때문에 autoresizingMask 는 실현 할 수 없다.더 많은 정력 을 Autolayot 에 두 어야 합 니 다.

좋은 웹페이지 즐겨찾기