1

정적 셀이있는 UITableViewController가 있습니다. 첫 번째 셀에는 uipickerView가 있습니다. (다른 셀에는 다른 것들이 있지만 관련성이 있다고는 생각하지 않습니다.) 셀의 두 가지 방법으로 pickerView를 중앙에 놓으려고했습니다. 첫째 - 나는 4 개의 제약 조건을 모두 추가했다. 그것은 저에게 오류를 주었고 시뮬레이터에서 실행할 때 올바르게 표시되지 않았습니다. 두 번째 방법은 x와 y에 2 개의 제약 조건을 추가했습니다. 그것도 나에게 오류를 줬다. 다음은 NSLayoutConstraint의 오류

오류입니다 :
2015-01-18 15:47:49.533 myApp[1476:54966] Unable to simultaneously satisfy constraints. 

Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
    "<NSLayoutConstraint:0x7fcbc24e9cb0 UITableViewCellContentView:0x7fcbc24da620.centerX == UIPickerView:0x7fcbc24eb1e0.centerX>", 
    "<NSIBPrototypingLayoutConstraint:0x7fcbc254d7e0 'IB auto generated at build time for view with fixed frame' H:|-(0)-[UIPickerView:0x7fcbc24eb1e0](LTR) (Names: '|':UITableViewCellContentView:0x7fcbc24da620)>", 
    "<NSIBPrototypingLayoutConstraint:0x7fcbc2556c00 'IB auto generated at build time for view with fixed frame' H:[UIPickerView:0x7fcbc24eb1e0(600)]>", 
    "<NSLayoutConstraint:0x7fcbc25be170 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7fcbc24da620(375)]>" 
) 

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7fcbc24e9cb0 UITableViewCellContentView:0x7fcbc24da620.centerX == UIPickerView:0x7fcbc24eb1e0.centerX> 
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. 
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful. 

그것은 Y에 같은 일을했다, 그러나 더 명확 것, 그래서 나는 그것을 잘라.

나는 초급자로 말할 수 있으므로 너무 가혹하지 마십시오.

업데이트

나는 멀리 둘 제약 (x와 y)를 데리고 나는 왼쪽과 오른쪽에 제약 조건을 추가했다. 오류 메시지에 제약의 목록을 읽을 수

<NSLayoutConstraint:0x7ffcf1d76200 UITableViewCellContentView:0x7ffcf1d0a2d0.trailingMargin == UIPickerView:0x7ffcf1d78a60.trailing - 8>", 
    "<NSLayoutConstraint:0x7ffcf1d529b0 UIPickerView:0x7ffcf1d78a60.leading == UITableViewCellContentView:0x7ffcf1d0a2d0.leadingMargin - 8>", 
    "<NSIBPrototypingLayoutConstraint:0x7ffcf1c74700 'IB auto generated at build time for view with fixed frame' H:[UIPickerView:0x7ffcf1d78a60(600)]>", 
    "<NSLayoutConstraint:0x7ffcf1dbf220 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x7ffcf1d0a2d0(375)]>" 
) 
Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x7ffcf1d76200 UITableViewCellContentView:0x7ffcf1d0a2d0.trailingMargin == UIPickerView:0x7ffcf1d78a60.trailing - 8> 
+0

이 어느 오류, 첫 번째 또는 두 번째 방법은? – matt

+0

두 번째 방법입니다. –

+0

새로운 문제를 재현 할 수 없습니다. 제약 조건이 나를 위해 작동합니다. 내 다시 개정 된 답변을 참조하십시오. – matt

답변

0

그것은 실제로 매우 쉽다 : 나는 그것을 실행하면 그것이 아이 패드, (아마 600)이었고, 그것이 나에게 다음과 같은 오류를 준 경우와 같이 pickerView이 퍼져 있었다 : 그것은 단지 약간의 연습이 필요합니다. 당신은 다음과 같습니다

  • 피커보기가

  • 피커 뷰의 왼쪽 가장자리가 슈퍼 뷰의 왼쪽 가장자리에 자사의 수퍼 수평 중심

  • 피커 뷰의 폭이 600

  • 입니다

셀이 600 픽셀 인 경우에만 조정할 수 있다는 것을 쉽게 알 수 있습니다. 하지만이 아닌 - 목록에서 네 번째 제약 조건이 당신을 알려줍니다 무엇 인 : 어떻게 수행

  • [그러나]을 수퍼의 폭이를 지금

375 당신은 아마 물어거야 이 갈등에서 벗어나? 나는 이러한 제약 조건 중 일부를 만들지도 않았다! I "중심"제약 조건을 제거하고 피커 뷰의 왼쪽 가장자리 및 오른쪽 가장자리을 수퍼 뷰로 제한하는 것이 가장 좋은 방법입니다. 따라서 너비는 슈퍼 뷰의 너비에 의해 결정되는 대신에 너비에 의해 결정됩니다.

편집 나는 그것을 밖으로 시도하고 그것을 잘 작동합니다 : 시뮬레이터에서 실행되는 정적 테이블보기의 단일 셀입니다

enter image description here

합니다. 선택기보기가 셀에 추가되었으며 세 개의 제약 조건 (상단, 왼쪽 및 오른쪽)을 적용했습니다. 콘솔에 문제가 나타나지 않습니다.여기

는 크기 관리자에서와 같이 제약 및 기타 정보입니다 :

enter image description here

+0

그럼 어떻게 수정해야합니까? 나는 그것이 아이폰을 위해서만있는 것을 원하지 않는다. 나는 또한 ipad에 그것을 원한다 –

+0

나는 당신이 그것을 요구할 것을 알았다 - 나의 수정 된 대답을 보아라. 그게 도움이되는지 알려주세요 ....! – matt

+1

그런데, @MikeSteevson, Interface Builder에서 문제가있는 제약이 있다면 경고합니다. 이 상황에 빠질 수있는 유일한 방법은 이러한 경고를 무시하는 것입니다. 그들을 무시하지 마십시오! 제약 조건에 대한 Interface Builder 경고를 없앨 때까지는 프로젝트를 실행하는 데 아무런 포인트가 없습니다. – matt