2014-12-28 3 views
0

다음은 디버그 영역에서받는 오류 메시지입니다. 그것은 잘 실행하고 아무것도이 오류가 나타납니다 제외하고 잘못된 것입니다. 이것이 애플이 애플 리케이션을 받아들이는 것을 막을까요? 어떻게 수정해야합니까?디버깅 할 때 "제약 조건을 동시에 만족할 수 없습니다"

( "<NSLayoutConstraint:0x7f9bdaf58890 UIView:0x7f9bdaf484e0.leading == UIView:0x7f9bdaf56e30.leadingMargin + 34>", "<NSLayoutConstraint:0x7f9bdaf58930 UIView:0x7f9bdaf56e30.trailingMargin == UIView:0x7f9bdaf484e0.trailing + 34>", "<NSLayoutConstraint:0x7f9bdaf58980 H:[UIView:0x7f9bdaf484e0(300)]>", "<NSLayoutConstraint:0x7f9bdaf5bfc0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7f9bdaf56e30(375)]>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x7f9bdaf58980 H:[UIView:0x7f9bdaf484e0(300)]>

+1

게시물의 마지막 줄인 시스템에서 제약 조건을 찾아 우선 순위를 낮 춥니 다. – gabbler

+0

제약 조건 중 하나를 제거하십시오. 뷰 (0x7f9bdaf484e0) 중 하나는 300 포인트 너비가 될 수 없으며 동시에 34 포인트의 뷰 0x7f9bdaf56e30에 선행 및 후행 여백이 있습니다. – dasdom

+0

@dasdom, 처음 두 제약 조건을 모두 UIView 특정 값을 가지고, 너비 ​​제약 조건을 삭제할 필요가 있으므로 양쪽의보기에 대한 폭 제약이 필요합니다, 또한 작동합니다 그 우선 순위를 줄이는 작동합니다. – gabbler

답변

2

나는 세포가 세포가 375 점을 넓게 할 필요가 오른쪽 가장자리에있는 tableView의 왼쪽 가장자리에서 도달하기 때문에이 아이폰 6

UITableView에서 일어나는 것 같아요. UITableView는 이것을 달성하기 위해 UIView-Encapsulated-Layout-Width 제약 조건을 추가합니다.

직접 입력 한 제약 조건 |-34-[centerView(=300)]-34-|은 셀 폭을 368 포인트로 만듭니다.

368! = 375이므로 이것은 작동하지 않습니다.

몇 가지 옵션이 있습니다.

    , 즉에서 동등한 제약에 제약 조건을 돌려 "보다 크거나 같은"를 중심으로 뷰의 폭을
  1. . |-34-[centerView(>=300)]-34-|
  2. "컨테이너의 수평 중심"제약 조건으로 centerView를 구속하고 너비 제약 조건을 유지하고 가장자리 - 거리 구속 조건을 제거합니다.
  3. 너비 제약 조건을 완전히 제거하십시오. 너비는 셀 너비에 따라 달라집니다. 예 : |-34-[centerView]-34-|의 경우 iPhone 6에서 307pt 너비보기로, iPhone 6에서는 너비 346 포인트, iPhone 5에서는 252 포인트 넓이가됩니다.

시스템이 width = 300 제약 조건을 위반하는 경우 앱이 작동한다고 말했듯이 그 제약 조건을 직접 삭제할 수 있습니다. 그것이 그 제약없이 작동한다면 그것을 갖는 데 아무런 의미가 없습니다.

두 개의 가장자리 거리 제약 조건과 폭 제약 조건을 동시에 갖는 것은 의미가 없으며 자동 레이아웃의 목적을 상실합니다.