2011-10-29 4 views
8

보기의 크기를 0으로 애니메이션화하는 데 문제가 있습니다. 여기 내 코드는 다음과 같습니다.애니메이션 UIView 눈금을 0으로

[UIView animateWithDuration:0.3 animations:^{ 
    myView.transform = CGAffineTransformMakeScale(0.0, 0.0); 
} completion:^(BOOL finished){ 

}]; 

무엇인가의 이유로, 오래된 TV 튜브가 꺼지는 것처럼 어떤 이유로 화면이 수평으로 늘어나고 눌립니다. 저울을 (0.1, 0.1)으로 만들면 적절하게 비율이 조정되지만 물론 0이되지는 않습니다.

왜 이런 일이 발생합니까?

+0

난 여전히 같은 문제가 있습니다. 해결책을 찾았습니까? –

답변

4

시도 :

[UIView animateWithDuration:0.3 animations:^{ 
    myView.frame = CGRectMake(myView.origin.x, myView.origin.y, 0.0, 0.0); 
} completion:^(BOOL finished){ 
}]; 
+0

centre.x, centre.y가 중심점으로 사라집니다. – jrturton

+2

고마워요.하지만 가능한 경우 변환을 사용하고 싶습니다. 뷰 내용 계층 구조는 매우 복잡하므로 적절하게 크기를 조정하려면 각 하위 뷰의 자동 크기 조정 마스크 속성을 검토해야합니다. – pixelfreak

+0

앵커 포인트를 수정하면 작동하지 않습니다 – mhillsman

2

사용하십시오 :

myView.layer.transform = CGAffineTransformMakeScale(0.0, 0.0); 
+2

'myView.transform'을 의미하는 것 같아요. – Webdevotion

+0

스케일 변환에 (0.0, 0.0)으로 애니메이션을 적용 할 수 없습니다. –

7

을 누군가가 여전히 관심이 있다면, 여기에 내가이 (거의) 작동하도록 (스위프트에) 무슨 짓을했는지 :

UIView.animateWithDuration(1, animations: { 
    myView.transform = CGAffineTransformMakeScale(0.01, 0.01) 
}, completion: nil) 

지속 시간이 짧으면 정확하게 0으로 스케일되지 않으며 효과적으로 사라지지 않는다는 것을 알지 못합니다.

1

누구나이 문제가 계속되는 경우 문제는 스케일 인수가 0 인 경우 아핀 변환 행렬이 고유하지 않음에 기인합니다. 초기 행렬과 영점 사이를 "올바르게"보간하는 방법을 알 수 없습니다 매트릭스, 그래서 당신이 묘사 한 이상한 효과를 얻을.

해결 방법은 단순히 작지만 0이 아닌 스케일 값을 사용하는 것입니다.

[UIView animateWithDuration:0.3 
       animations:^{ myView.transform = CGAffineTransformMakeScale(0.01, 0.01); } 
       completion:nil];