2014-01-21 4 views
8

문제가 있습니다. 나는 앱을 만들고 있는데, 과 함께 storyboard을 사용하고 있습니다. Autolayout이 활성화되어 있습니다. 이제 내 UIViewControllers 중 하나에 UIView (A)을 넣었습니다. 이제 A는 여러 개의 하위 뷰 (정확하게는 UIViews)를가집니다. A에 "Horizontally and Vertically centered"제약 조건을 적용했습니다. A 내부의 하위 뷰에는 제약 조건이 없습니다.자동 레이아웃을 사용할 때 UIView 프레임이 재설정됩니다.

지금 내 코드에서 나는 내가 UIView's 애니메이션 메서드를 호출하는 방법 내부 A. 내부에있는 하위 뷰를 애니메이션하는 방법 ...

[UIView animateWithDuration: delay: options: animations: completion:]; 

이 있고 서브 뷰의 내부보기 A. 중 하나를 애니메이션 이제 문제는 이러한 프레임 변경이 지속되지 않는다는 것입니다. 내가 현재보기 컨트롤러에서보기 컨트롤러를 모달화한 다음 A 내부의 모든 하위보기의 프레임을 닫으면 다시 설정됩니다.

나는 그것을 찾아 내고 Autolayout 때문에 문제가 발생했음을 발견했다. 나는 그것을 작동시키지 않았고 다시 시도했고 모든 것이 잘 작동했다.

하지만 해결 방법은 무엇입니까? Autolayout 사용 ...?

나는 뭔가를 놓친다 ...?

흥미로운 것은

에 유래에 많은 게시물은 자동 레이아웃 사용하는 경우

우리는 제약 및 NOT 프레임 애니메이션을 것을 제안한다는 것입니다.

하지만 내가보기 A. 제약 내부에있는 서브 뷰의 모든 제약 조건을 적용하지 않은 경우에만

감사보기 A에 적용됩니다. 이

+0

당신은 권장하지 않는 것들을 포함하여 꽤 많은 것들을 요구하고 있습니다. 이 질문을 다른 질문으로 나누고 핵심 문제를 지원하는 코드 샘플을 포함 시키십시오. –

+0

무엇이 재설정 되나요? 처음에 이러한 견해를 어떻게 추가합니까? – jrturton

답변

17

. Autolayout 시스템은 레이아웃 제약 조건에 따라 뷰 계층의 모든 뷰의 위치와 크기를 주기적으로 설정합니다.

+0

autolayout과 함께 –

+0

에서이 작업을 수행하십시오. 좋아요 ... 오늘 시도하고 ... 작동하는지 알려 드리겠습니다.어쨌든 고마워 ... –

+0

나는 그것을 시도했다. 그리고 그것은 작동합니다. 하위보기는 자동 레이아웃을 사용하여 애니메이션으로 시작되었습니다. 그러나 다음과 같은 경고를 인쇄합니다 ... 동시에 제약 조건을 만족시킬 수 없습니다. 아마도 다음 목록에있는 제약 중 적어도 하나는 원치 않는 것입니다. 이것을 시도하십시오 : (1) 각 제약 조건을보고 당신이 예상하지 못한 것을 알아 내려고 시도하십시오; (2) 원하지 않는 제약 조건 또는 제약 조건을 추가 한 코드를 찾아 수정하십시오. 참고 이해할 수없는 NSAutoresizingMaskLayoutConstraints가 표시되는 경우 UIView 속성 translatesAutoresizingMaskIntoConstraints –

3

이유는 자동 레이아웃이 원래의 위치로 뷰를 업데이트 할 것입니다 도움이

myViewToAnimate.translatesAutoresizingMaskIntoConstraints = YES; 

의 viewDidLoad

에 다음 코드를 작성 희망 애니메이션 모든 뷰

0

이 추가 : 퍼팅

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    VIEWTOFIX.setTranslatesAutoresizingMaskIntoConstraints(true) 
} 

viewDidLayoutSubviews 대신 viewDidLoad의 나를위한 레이아웃 제약 조건 오류를 제거되었다에서.

관련 문제