Masonry 레이아웃 사용에 대한 질문

1543 단어
1. 최근에 불행하게도 XCode를 8.0으로 업그레이드하면 이전에 잘 실행된 프로젝트 프로그램이 갑자기crash가 된 것을 발견할 수 있습니다.만약에 프로젝트에서 제3자 레이아웃 라이브러리 Masonry를 마침 사용했다면 인터럽트에서 오류를 발견할 수 있습니다. 당신이 설정한 제약에 문제가 생겼기 때문입니다.제약 때문에crash가 나타나는 원인은 크게 두 가지가 있다. (1).XCode8에서 프로그램 내의 원래 두 글자의 너비는 24였는데, 현재 두 글자는 27의 너비로 표시되어야 한다.글꼴과 관련된 컨트롤은 이 때문에 문제가 발생할 수 있으며crash를 발생시킬 수 있습니다.(2).XCode8 이후 Masonry 레이아웃이 crash를 일으킨 원인은 당신이 Masonry 레이아웃을 사용할 때 엄격하지 않아서 iOS10 위에 crash가 나타날 수도 있습니다. 왜냐하면 iOS9 이전에 엄격하지 않아서 crash를 할 줄 몰랐기 때문입니다. iOS10 위에 가면 안 됩니다. iOS10과 Xcode8에 어울리려면 인터넷에 접속해서 관련 자료를 찾아보세요.2. Masonry를 사용할 때couldn't find a common superview가 나타납니다. 오류 알림에 따라 오류가 어디에 있는지 알 수 있습니다. 당신이 설정한 이 컨트롤은 의존하는 컨트롤과 공통된 부모 보기가 없습니다.공통된 뷰를 참조로 사용할 수 없기 때문에 프레임은 동일한 좌표계로 변환할 수 없습니다.이 문제는 제약을 설정할 보기를 만들고 부모 컨트롤에 추가하지 않았거나 제약을 설정할 보기와 의존하는 보기가 공통된 부모 보기가 없는 경우에 자주 나타난다.(1).해결 방안:masonry 제어 대상의 제약 전에 대상을 특정한 제어에 추가합니다 [self.view addSubview:label].(2).추가가 끝난 후에도 문제가 있다는 것을 발견할 수 있다. 이럴 때 제약을 설정한 보기와 참조한 보기를 살펴보고 원인을 찾지 못할 수도 있다.
[self.view addSubview:self.InsertView];
[self.InsertView addSubview:_cashLabel];
[self.cashLabel mas_makeConstraints:^(MASConstraintMaker *make) {      
 make.left.equalTo(self.InsertView.mas_left).equalTo(@10);   
  make.top.equalTo(self.InsertView.mas_top).equalTo(@14);  
   }];

사용하셨다고 보내주실 거예요밑줄 문법, 마침 label에 게으름을 피우고 get 방법을 다시 불러왔습니다.self.cashLabel은 속성의 Getter 방법을 호출하여 게으름을 일으키지만cashLabel은 부분적인 변수에 접근할 뿐입니다.그래서 이렇게 추가된 컨트롤이 항상 잘못된 이유도 여기에 있다.본인의 수준이 제한되어 있기 때문에 만약에 잘못 쓴 부분이 있으면 지적해 주시기 바랍니다. 본인도 가장 먼저 잘못을 수정하여 여러분을 오도하지 않도록 하겠습니다.

좋은 웹페이지 즐겨찾기