2013-07-31 3 views
4

나는 animateWithDuration:animations 방법으로 그것의 프레임 변경하는 UITextView 있습니다추적 UIView의 프레임 변화 애니메이션

[UIView animateWithDuration:1.5 animations:^{ 
    [_textView setFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height - keyboardSize.height-25)]; 
}]; 

가 애니메이션으로 나를 UITextView의 높이를 추적 할 수있는 콜백 거기를?

+0

나는 거기에 없다고 확신한다. 정확히 무엇을하려는 거니? 높이가 변하는 양과 변경하는 데 걸리는 시간을 기준으로 높이를 계산해야 할 수도 있습니다. – JeffRegan

+0

그렇게하지 마십시오! 이징 기능은 항상 선형이 아니므로이 방법은 작동하지 않습니다. 맞춤 애니메이션을 만들거나 내 답변을 확인하십시오. – Farthen

+0

왜 애니메이션 중에 텍스트 필드의 프레임을 추적하는 방법을 찾고 있습니까? –

답변

1

이것은이 작업으로 무엇을하고 싶은지에 따라 다릅니다.

프레임에 대한 정확한 정보를 원하는 경우 presentationLayer을 사용하십시오. 이것은 실제로 화면에 무엇이 있는지에 대한 반정 도적 인 표현입니다. 이것은 뷰 (경계)의 좌표에 있으므로 현재 프레임을 얻으려면 슈퍼 뷰의 좌표계로 변환해야합니다.

CGRect currentTextViewFrame = [_textView.superview convertRect:[_textView.layer.presentationLayer frame] fromView:_textView]; 

그러나 이것은 약 하나의 그리기 루프 이상입니다. 다른 애니메이션을 기본으로 삼으려고하면 문제가 생길 수 있으며 깜박임이나 기타 지연 유발 효과가 발생할 수 있습니다. 또한, 적어도 공식 문서는 이것이 항상 빠르지는 않을 수도 있으며, 성능상의 이유로 자주이 정보가 필요하면 애니메이션을 직접 제작할 수도 있습니다.

3

정확한 방법은 없습니다. 프레임이 바로 설정되기 때문입니다. 애니메이션은 전환을 처리하지만 사실 전환은 없습니다.

현재 프레임 크기가 얼마인지 추정 할 수있는 몇 가지 방법이 있습니다. 가장 좋은 방법은 타이머를 사용하는 간단한 수학 솔루션과 애니메이션이 시작된 시간과 애니메이션 기간입니다.

또 다른 방법을 사용하면 코드 비용 및 정확도에 영향을 미칠 수 있으므로 최선의 방법입니다.

내 첫 번째 게시물이고 실제로 배우는 것이나 도움이되지 않는 것을 알지 못합니다.

0
[_textView.layer.presentationLayer frame].size.height; 

신용은 this anwser에 속합니다.

관련 문제