2015-01-06 1 views
0

프로그래밍 방식으로 추가 한 UIImageView가있는 도구 모음이 있습니다. NSConstraint를 UIImageView에 추가하여 툴바보기에 중앙에 넣으려고했을 때. 시뮬레이터에서 실행했을 때 충돌이 발생했습니다. 다음은 내 코드입니다 :NSConstraint not working

UIImageView *image = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 
       nav.frame.size.width, nav.frame.size.height)]; 

image.image = [UIImage imageNamed:[imageTop objectAtIndex:2]]; 
[imageToolbar addSubview:image]; 

[imageToolbar addConstraint:[NSLayoutConstraint constraintWithItem:image 
              attribute:NSLayoutAttributeCenterX 
               relatedBy:NSLayoutRelationEqual 
                toItem:imageToolbar 
              attribute:NSLayoutAttributeCenterX 
                multiplier:1.0 constant:0]]; 

[imageToolbar addConstraint:[NSLayoutConstraint constraintWithItem:image 
              attribute:NSLayoutAttributeCenterY 
               relatedBy:NSLayoutRelationEqual 
                toItem:imageToolbar 
              attribute:NSLayoutAttributeCenterY 
                multiplier:1.0 constant:0]]; 

오류 : 동시에 제약 조건을 만족 수 없습니다.

아마도 다음 목록의 제한 조건 중 하나 이상은 원치 않는 것일 수 있습니다. 이것을 시도하십시오 : (1) 각 제약 조건을보고 당신이 예상하지 못한 것을 알아 내려고 시도하십시오; (2) 원하지 않는 제약 조건 또는 제약 조건을 추가 한 코드를 찾아 수정하십시오.

하는 제약 조건을 파괴함으로써 복구하려고합니다

(

"<NSLayoutConstraint:0x7fcfc2536f50 UIImageView:0x7fcfc2536d50.centerX == UIToolbar:0x7fcfc2525610.centerX>", 

"<NSLayoutConstraint:0x7fcfc252dad0 UIView:0x7fcfc252c750.trailingMargin == UIToolbar:0x7fcfc2525610.trailing - 16>", 

"<NSLayoutConstraint:0x7fcfc252db20 UIToolbar:0x7fcfc2525610.leading == UIView:0x7fcfc252c750.leadingMargin - 16>", 

"<NSAutoresizingMaskLayoutConstraint:0x7fcfc254fea0 h=--& v=--& UIImageView:0x7fcfc2536d50.midX == + 160>", 

"<NSLayoutConstraint:0x7fcfc2551110 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7fcfc252c750(375)]>" 

를) (참고 : 당신이 이해하지 못하는 NSAutoresizingMaskLayoutConstraints을보고있는 경우, UIView의 속성 translatesAutoresizingMaskIntoConstraints에 대한 설명서를 참조하십시오)

것은 UIViewAlertForUnsatisfiableConstraint에서 상징적 중단 점을 확인 디버거에서 이것을 잡아라.

위에 나열된 UIView의 UIConstraintBasedLayoutDebugging 범주의 메서드도 유용 할 수 있습니다.

고맙습니다

+0

그리고 추락했을 때 콘솔에서 매우 중요한 메시지를 전했습니다. – matt

+0

당신은 크래시 로그를 읽지 않아도되므로 크래시 로그를 게시하지 않아도되고 잘못된 코드를 게시했습니다. 불행히도 나는 한 번만 질문을 downvote 수 있습니다. 그래도 그걸 고쳐줬으면 좋겠어. 다음 번에는 게시하기 전에 수정하십시오. – matt

+0

그 점에 대해 죄송합니다. –

답변

0

당신이있는 UIImageView를 만들었하지만 당신은 인터페이스에 해당 이미지보기를 추가하지 않았습니다. 인터페이스에없는 뷰에는 제약 조건을 추가 할 수 없습니다. 그렇게한다면, 당신은 충돌 할 것입니다.

또한 translatesAutoresizingMaskIntoConstraints을 NO로 설정하지 않았습니다. 그렇게하지 않으면 자신의 제약 조건을 추가 할 때 제약 조건이 상충되고 충돌 할 수 있습니다.

정말로, 콘솔에서 오류 메시지를 읽는 것입니다. 나의 오래된 민속 무용 선생님은 "음악이 무엇을 해야할지 알려줍니다!"라고 말하곤했습니다.

+0

툴바에 imageView를 추가했습니다. 나는 그것을 tho 게시하지 않았다 –

+0

사실 코드가 아닌 코드를 게시하려면 어리 석고 무례하다. 코드가 말하는 것에 대해 거짓말을하면 사람들은 당신을 도울 수 없습니다. 그러나, 나는 어쨌든 질문에 대답했다. – matt

+0

방금 ​​stackoverflow 게시하지 않았다, 방금 업데이트했습니다. 혼란을 드려 죄송합니다 –