2013-09-24 2 views
0
, 최고의 ASCII 아트로 표시 동시에 view1 스트레칭하는 것은, view2가 다시 올 수뿐만 아니라 현장

최저 NSLayoutConstraint 애니메이션 제거를위한/측면의 추가 옆에 항목

|-padding-[ view1 ]-padding-| 

의 채우기 위해 그 애니메이션을 반대한다 ... 그리고 같은 view1 같은그것을 위해 일어날 수있다

|-padding-[ view2 ]-padding-| 

저는 AutoLayout없이 이것을 수행하는 방법을 알고 있지만,이 새로운 API에 관해서는 우리가 모두 noobs 인 것처럼 보입니다. Autolayout을 사용하여 고급 애니메이션에 접근하는 가장 좋은 방법은 무엇입니까?

답변

2

다른보기 (아래 컨테이너라고 함) 안에 view1과 view2를 넣으려고합니다. 컨테이너보기는 다음과 같이 제한됩니다.

|-padding-[container]-padding-| 

그러면 view1 및 view2의 왼쪽 및 오른쪽 가장자리가 컨테이너보기로 제한됩니다. 버튼의 확장과 축소는 이러한 제약 조건에 애니메이션을 적용하여 처리됩니다. 예를 들어

|-[view1]-halfContainerWidth-| 
|-halfContainerWidth-[view2]-| 

, 숨길 뷰 2 :

[UIView animateWithDuration:0.5 animations:^{ 
    view2.alpha = 0.0; 
    view1RightConstraint.constant = 0.0; 
}; 

다시 뷰 2 표시하려면 : 당신은 컨테이너보기없이이 작업을 수행 할 수

[UIView animateWithDuration:0.5 animations:^{ 
    view2.alpha = 1.0; 
    CGFloat containerWidth = container.frame.size.width; 
    view1RightConstraint.constant = containerWidth/2.0; 
}; 

하지만 내가 가진 생각 일이 더 간단 해집니다. 본질적으로는 오른쪽 뷰의 왼쪽 및 왼쪽 가장자리 구속 조건에서 뷰의 오른쪽 가장자리 구속 조건에 대한 상수 값을 관리하는 것입니다. 뷰가 1 개 밖에 보이지 않으면 상수는 0이고 둘 다 표시되면 컨테이너/2의 너비가됩니다.