source

프로그래밍 방식으로 마스크 자동 크기 조정 및 인터페이스 작성기 / xib / nib

factcode 2023. 4. 29. 09:56
반응형

프로그래밍 방식으로 마스크 자동 크기 조정 및 인터페이스 작성기 / xib / nib

오른쪽 여백 표시기를 활성화하는 것이 다음을 사용하는 것과 같다는 (아마도 잘못된) 가정에 있었습니다.UIViewAutoresizingFlexibleLeftMargin내부 코드 등.

그래서 저는 이 스냅샷에 따라 다음과 같이 생각하곤 했습니다.여기에 이미지 설명 입력

오늘 늦게 저는 교차 점검을 해야 했고, 이 스레드우연히 발견했습니다.

또한 다음 링크의 "자동 크기 조정 규칙을 사용하여 자동으로 레이아웃 변경 처리" 섹션 제목이 붙은 애플 문서도 참조하십시오. https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/CreatingViews.html

이제 자동 크기 조정 마스크를 프로그래밍 방식으로 설정하는 것이 xib 설정과 동일한지에 대한 새로운 개념을 알게 되었습니다.

시나리오 1: 설정만(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)다음과 같습니다.

(UIView유연한 너비 자동 재설정 | UIView유연한 크기 자동 재설정

XIB에서?

시나리오 2: 설정(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)in code는 다음과 같습니다.

(UIView유연한 너비 자동 재설정 | UIView유연한 크기 자동 재설정

XIB에서?

나의 두 개의 갱신된 시나리오가 맞습니까?제가 지금 이해하고 있는 게 맞나요?

네, 당신은 정확하게 인용했습니다.또한, 저는 그것이 약간 거꾸로 느껴진다는 것에 동의합니다, 그래서 저는 당신의 게시물에 감사드립니다.

전처리기 매크로를 사용할 수 있습니다.UIViewAutoresizingFlexibleMargins모든 방향에서 UI 보기의 여백을 유연하게 만드는 경우.이것을 미리 컴파일된 헤더 파일에 넣어서 모든 곳에 포함시켰습니다.

#define UIViewAutoresizingFlexibleMargins                 \
              UIViewAutoresizingFlexibleBottomMargin    | \
              UIViewAutoresizingFlexibleLeftMargin      | \
              UIViewAutoresizingFlexibleRightMargin     | \
              UIViewAutoresizingFlexibleTopMargin

사용.UIViewAutoresizingFlexibleMarginsUI 요소는 어느 한쪽을 껴안지 않기 때문에 중심을 유지합니다.요소를 상위 요소와 함께 증가/축소하려면 다음을 설정합니다.UIViewAutoresizingFlexibleWidth그리고.UIViewAutoresizingFlexibleHeight각각 다음과 같다.

사용하는 것을 좋아합니다.UIViewAutoresizingFlexibleMargins나중에 다음과 같이 참조할 수 있기 때문입니다.

myView.autoresizingMask = UIViewAutoresizingFlexibleMargins;

대신에

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

위의 예와 같이 이러한 마진이 한 줄에 함께 표시되는 경우가 많습니다.그냥 읽기 힘들어요.

예, Interface Builder는 어떤 의미에서는 "역방향"입니다(또는 UIView는 보기에 따라 다릅니다).인용한 "시나리오"가 맞습니다.

여기에 이미지 설명 입력

상자 내부의 수직/수평 화살표(스프링이라고 함)를 활성화하면 높이/폭이 유연해집니다.그러나 외부 라인(스트럿이라고 함)을 활성화하면 해당 측면이 유연하지 않거나 유연하지 않게 됩니다.

좌측 외측 라인(좌측 스트럿)을 활성화하는 것은 활성화하는 것과 동일하지 않습니다.UIViewAutoresizingFlexibleRightMargin.대신,UIViewAutoresizingFlexibleRightMargin우측 스트럿이 비활성화된 경우 ON, 우측 스트럿이 활성화된 경우 OFF.

처음에는 상당히 헷갈리지만 자세히 보면 스프링과 스트럿에 차이가 있습니다.애플이 왜 이런 일을 했는지는 모르겠지만, 저로서는 좀 더 사용하기 쉬운 경우도 있었습니다.그리고 코드에서 반대의 속성을 사용하는 것은 훨씬 더 혼란스럽습니다.

스위프트 4는 이것을 사용합니다.

gadBannerView?.autoresizingMask = [.flexibleRightMargin  , .flexibleLeftMargin , .flexibleTopMargin , .flexibleBottomMargin]

목표-C

myView.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin;

언급URL : https://stackoverflow.com/questions/7754851/autoresizing-masks-programmatically-vs-interface-builder-xib-nib

반응형