프로그래밍 방식으로 마스크 자동 크기 조정 및 인터페이스 작성기 / xib / nib
오른쪽 여백 표시기를 활성화하는 것이 다음을 사용하는 것과 같다는 (아마도 잘못된) 가정에 있었습니다.UIViewAutoresizingFlexibleLeftMargin
내부 코드 등.
그래서 저는 이 스냅샷에 따라 다음과 같이 생각하곤 했습니다.
오늘 늦게 저는 교차 점검을 해야 했고, 이 스레드를 우연히 발견했습니다.
또한 다음 링크의 "자동 크기 조정 규칙을 사용하여 자동으로 레이아웃 변경 처리" 섹션 제목이 붙은 애플 문서도 참조하십시오. https://developer.apple.com/library/content/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingViews/CreatingViews.html
이제 자동 크기 조정 마스크를 프로그래밍 방식으로 설정하는 것이 xib 설정과 동일한지에 대한 새로운 개념을 알게 되었습니다.
시나리오 1: 설정만(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)
다음과 같습니다.
XIB에서?
시나리오 2: 설정(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin)
in code는 다음과 같습니다.
XIB에서?
나의 두 개의 갱신된 시나리오가 맞습니까?제가 지금 이해하고 있는 게 맞나요?
네, 당신은 정확하게 인용했습니다.또한, 저는 그것이 약간 거꾸로 느껴진다는 것에 동의합니다, 그래서 저는 당신의 게시물에 감사드립니다.
전처리기 매크로를 사용할 수 있습니다.UIViewAutoresizingFlexibleMargins
모든 방향에서 UI 보기의 여백을 유연하게 만드는 경우.이것을 미리 컴파일된 헤더 파일에 넣어서 모든 곳에 포함시켰습니다.
#define UIViewAutoresizingFlexibleMargins \
UIViewAutoresizingFlexibleBottomMargin | \
UIViewAutoresizingFlexibleLeftMargin | \
UIViewAutoresizingFlexibleRightMargin | \
UIViewAutoresizingFlexibleTopMargin
사용.UIViewAutoresizingFlexibleMargins
UI 요소는 어느 한쪽을 껴안지 않기 때문에 중심을 유지합니다.요소를 상위 요소와 함께 증가/축소하려면 다음을 설정합니다.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
'source' 카테고리의 다른 글
SQL Server에서 쿼리 실행 계획을 얻으려면 어떻게 해야 합니까? (0) | 2023.04.29 |
---|---|
Mongoose에서 외부 키 관계 만들기 (0) | 2023.04.29 |
이클립스를 인터페이스 방식의 유일한 구현으로 전환하는 방법은 무엇입니까? (0) | 2023.04.29 |
Swift의 UIActivityViewController로 텍스트 또는 이미지를 공유하기 위한 기본 예제 (0) | 2023.04.29 |
데이터베이스 설계:계정 잔액 계산 (0) | 2023.04.29 |