[AutoLayout] s y stem Layout Size Fitting Size 이제 고민 안 해도 돼!

2930 단어 iOSAutoLayout
systemLayoutSizeFittingSize
여러 번 까먹어서 썼어요.
다음 두 가지 정보
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize;
- (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize 
        withHorizontalFittingPriority:(UILayoutPriority)horizontalFittingPriority 
              verticalFittingPriority:(UILayoutPriority)verticalFittingPriority;
공식.
https://developer.apple.com/documentation/uikit/uiview/1622624-systemlayoutsizefittingsize

용도


AutoLayout이 설정한 View 클러스터에서 콘텐츠를 설정한 후 적절한 높이, 너비 등을 얻을 수 있습니다.

기본적


targetsize에 대해서 말하자면 대충.
UI LayoutFitting ExpandedSize
U I L에 대한 ayoutFittingComporessedSize 지정
ExpandedSize는 최대한 크게.
ComporessedSize 최소화
이상
...그나저나 징징거리기만 하면 많이 나온다
하지만 잘 돌아가지 않는 부분이 많기 때문에 어떤 구조인지 이해해야 한다

UILayoutFitting??


U I LayoutFitting Expanded Size, U I L youtFitting Comporessed Size는 CGSize입니다.
일지를 내자마자 알았다
UI LayoutFittingExpandedSize(width,height)=(10000)
U I L ayoutFittingComporessedSize는 (width,height) = (0,0)
systemLayoutSizeFittingSize:UILayoutFittingCompressedSize;
systemLayoutSizeFittingSize:CGSizeMake(0,0);
같다
근데 그것만은 잘 모르겠어요.

FittingPriority


UIView.딱 보니까 H가 이렇게 써있어요.
 - (CGSize)systemLayoutSizeFittingSize:(CGSize)targetSize NS_AVAILABLE_IOS(6_0); // Equivalent to sending  -systemLayoutSizeFittingSize:withHorizontalFittingPriority:verticalFittingPriority: with UILayoutPriorityFittingSizeLevel for both priorities.
즉, 아래의 두 값은 같다.
// これと
systemLayoutSizeFittingSize:targetSize;

// これ
systemLayoutSizeFittingSize:targetSize 
        withHorizontalFittingPriority:UILayoutPriorityFittingSizeLevel
              verticalFittingPriority:UILayoutPriorityFittingSizeLevel;
U I Layo u u t wority Fitting Size Level은 UIlayout Prority에서 가장 낮은 것(=50)

정황


그러니까 이런 상황.

예를 들어, s stemLayoutsize FittingSize: U I La youtFitting ComporessedSize는
(width, height) = (0, 0)의 빨간 상자에 대상을 넣은 View는 여분을 0으로 설정하고, Horizontal과 Vertical의 LayoutProry를 50으로 설정하면 AutoLayout의 결과 사이즈가 되돌아온다.
이런 상태.

제대로 작동하지 않을 때


오토Layout에 익숙해졌다면 이런 내용을 이해할 수 있다면 제대로 움직이지 못하는 이유를 생각하게 될 것 같다.
흔히 볼 수 있는 모델로, 예를 들어 Horizontal을 고정시키려면 높이만 얻으면 가로폭을 고정하면 된다.
systemLayoutSizeFittingSize:CGSizeMake(self.view.frame.size.width,0)
        withHorizontalFittingPriority:UILayoutPriorityRequired
              verticalFittingPriority:UILayoutPriorityFittingSizeLevel;
스케줄러:있지?🤔 이곳은 자주 혼란스러워요. 뭔가 잘못되면 미안해요)

좋은 웹페이지 즐겨찾기