iOS 11 도구 모음 AutoLayout 정보

오래간만
iOS11 대응은 어때, 힘들지.
이번에는 도구막대 레이아웃 붕괴에 대응하는 tips입니다.
NDA가 켜졌기 때문에 정말 설명하고 싶은데 무사히 아웃될 수 있을지 모르겠어요.
나는 교재로 설명하고 싶다.

원래 도구 모음의 AutoLayout은 무엇입니까?


https://developer.apple.com/videos/play/wwdc2017/204/
이 비디오테이프는 약 30분 정도 지나자 "네비게이션 주변의 AutoLayou가 대응했다"(초의역)
그래서, 뭐랄까, 어떻게 이런 일을 하든지 특별한 접촉이 없다(영어를 아는 사람은 알 수 있다)

그러니까 어떻게 되는지.


오류를 표시합니다.
교정쇄를 부착할 수 없어서 대단한 설명을 이해하기 어려웠습니다. 죄송합니다.
화면 폭을 6등분으로 나누는 단추를 도구 모음에 놓은 상태에서 오류가 발생했습니다.
화면이 이동할 때 다운이 생겼거나

까닭


AutoLayout은 물론이고
도구 모음의 AutoLayout에 표시된 View Hierrarchy 표시 도구 모음의view에 StackView 확장 클래스가 있음(비공개 클래스)
UIToolber > _UIToolbarContentView > _UIButtonBarStackView
상황이 이렇다.
UIBARButon Item(custom View:)에서 view를 구성하면 이 StackView에 view가 구성됩니다.

왜 붕괴의 1


여러분, storyboard와xib에 대상을 설정한 사람은 변형 좌우에 16px의 커미션 제한이 있기 때문에 알아야 합니다.
수수께끼 같은 16px에 대해 이미 많은 선조들이 고찰하고 있으니 읽어 주십시오
예: http://qiita.com/yimajo/items/10f16629200f1beb7852
그럼, 즉 어떻게 된 일인지 말하기 전에 화면의 넓이를 표시한 버튼 수를 제외하고 도구 모음의 버튼 넓이를 결정하고custoomview를 만든다.
UIBARbuttonItemu의 경우
이 정도의 16px, 즉 32px의 편차가 생길 수 있다.
toolbar은 AutoLayout을 통해 버튼을 교묘하게 표시하려고 하기 때문에 어떤 단추가 모여서 작아집니다
최악의 경우 그림을 그릴 때 메모리를 자꾸 먹으면 다운된다.
따라서 iOS 11에서 버튼을 도구 모음에 균등한 너비로 깔 때 화면 너비의 36px를 고려해야 한다.
일정한 제한이 있기 때문에 toolbar에서subviews를 찾다가 StackView를 발견하고 constraint를 하면 16px가 0px가 되어 회피할 수 있지만 비공개 반이기 때문에 너무 아슬아슬한 일은 하지 않는 것이 좋다고 생각합니다.

왜 붕괴의 2


그 1은 붕괴가 막 나으려고 하는 순간 또 오차가 생겼다는 뜻이다.
도구 모음을 표시할 때마다(도구 모음 단추를 깔지 않은 화면과 표시하지 않은 화면)의 가장자리가 변한다.
나는 이것이 왜 조사를 진행했는지 생각한다.
디스플레이의 붕괴를 일으키는 부분은 화면의 왼쪽과 오른쪽에 단추가 있고 중간에 공백이 있는 구조이다

이를 위해 비즈니스에서 사용하는 애플리케이션은 투명한 커스텀 뷰를 위에 부착하는 UIBAR Buton Item으로 그 기간을 채우는 방법을 사용했습니다.

이런 느낌
결론적으로 이것은 좋지 않다.

UIButton BarStackView 설정


비공개 적 이지만 전라 하였다
설정이지만.
axis: horizontal
alignment: center
distribution: fill
예, 그렇습니다.
그중에 디스패치 정보가 중요해요.
http://qiita.com/yucovin/items/ff58fcbd60ca81de77cb
StackView의 distribution과 fill이 어떤 상태인지 말씀드리자면요.
StackView 내의 View를 꽉 찬 StackView로 확대하여 표시하는 설정입니다.

StackView와 경쟁 우위 확보


따라서 고정된 너비의 View를 항상 toolbar에 놓으면 (또는 이렇게 할 수밖에 없다)
StackView를 늘리려는 구속과 충돌하면 디스플레이가 충돌합니다.보기만 해도 일어나지 않아도 View Hierrarchy를 보면 편안해!마크의 경고가 나왔을 수도 있어.

어떻게 해결합니까


UIBARButon Item 사용(barButon System:.flexble Space, ~)
도구막대에 부드러운 공백을 두기 위해 사용하는 물건입니다(좋은 설명이 떠오르지 않습니다)
그러고 보니 그렇긴 한데 고정폭이 좋지 않으면
가변 너비로 채워주세요!그러게 말이야.
예를 들어 두 개의 setToolbar의 넓이가 도구막대의 넓이를 완전히 채울 수 없는 경우: [button,button]
화면의 양쪽에 버튼이 설정됩니다.
경고가 표시되지 않습니다.
다음 도구막대의 화면 폭을 채우지 않는 세 개의 단추 setToolbar일 때: [button, button, button]
구성은 다음 그림과 같습니다.

StackView의 구성이 매우 나쁘기 때문입니다.
이 단추를 왼쪽 2개, 오른쪽 1개로 설정한 경우, 간격에 고정값이 투명한view를 놓으면 경고 표시가 붕괴됩니다
setTool barItmes

이렇게 된 느낌이 경고 없이 드러났다.
공간을 제대로 여는 방법인 것 같아요.

이게 끝이 아니에요.


경고도 사라졌고 표식도 사라졌으니 다행이다.
화면 전환 전view controller의navigationbar와 setToolbar 등 애니메이션과 관련된 시기에 setToolbar에서 이런 일이 발생할 수 있다(혹시 다른 것도 발생할 수 있다)
버튼의 개수가 바뀌면 autolayout의 조정 실행 시 애니메이션이 눈앞에 나타납니다.
그래서 setTool BarItem 이후의 상황에 따라...
viewController.navigationController.toolBar.layoutIfNeeded()
AutoLayout에 빨리 반응하는 게 좋을 것 같아요.

후기


워낙 시행이 잘 안 됐다는 의혹이 있었지만, 푹 빠지는 것 같아 Qita에 남게 됐다.
논단에서 많이 알려진 것 같은데 같은 곳에서 빠진 사람도 있을 거예요
https://forums.developer.apple.com/thread/80075
iOS 11이 끝난 줄 알았는데 다음은 아이폰X 대응이죠
아무튼 곧 있을 LINE DEVELOPER DAY를 즐겨보고 싶습니다.
그럼 그럼... 단락이 더 있다면.

좋은 웹페이지 즐겨찾기