2011-03-05 7 views
0

안녕 얘들 아, 나는 아직도 이것에 대한 답을 찾지 못했기 때문에 나는 너에게 물어볼 것 같아.코코아 터치 - UIAnimation 질문

[viewOggetto setFrame:aFrame]; 
[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 
[self.view addSubview:viewOggetto.view]; 
[UIView commitAnimations]; 

이것은보기가 한 위치에 나타나고 전체 화면으로 이동하는 간단한 애니메이션입니다. 내 질문은 :보기의 내용을 애니메이션에도 따라 가게하려면 어떻게해야합니까? 이제 뷰 프레임에 애니메이션이 올바르게 적용되었지만보기 안의 모든 내용이 즉시 전체 화면으로 표시됩니다.

감사합니다.

+0

'aFrame'은 제가 익숙하지 않은 방법입니다. '[viewOggetto setFrame : aFrame];'을 의미하지 않는다고 확신합니까? –

+0

Oggetto는 이탈리아어입니까? 영어와 이탈리아어를 혼합하는 대신 변수에 영어 이름을 사용하는 것이 좋을 것이라고 생각하지 않습니까? –

+0

첫 코멘트에 대해 옳았습니다. [viewOggetto setFrame : aFrame]; 또한 예, Oggetto는 이탈리아어 이름이지만 작업하는 컨텍스트에 필수입니다. – Lorenzo

답변

0

하지만 viewOggetto는 정확히 무엇입니까? UIView 인 경우 viewOggetto.view를 호출하는 이유는 무엇입니까?

은 UIViewController입니까? 그것은 UIView의 단지마다 "viewOggetto.view"코드

에서 ".view"를 삭제의 경우

[self.view addSubview:viewOggetto.view]; // you need to have it before to animate it 

// initial state of the animation: 
[viewOggetto.view setFrame:CGRectMake(160, 240, 1, 1)]; // zoom from center 
// viewOggetto.view.alpha = 0; // eventually to add a fadeIn animation 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.5]; 
// ending state of animation: 
// viewOggetto.view.alpha = 1; // restore to 1 to eventually to add a fadeIn animation 
[viewOggetto.view setFrame:CGRectMake(0, 0, 320, 480)]; 

[UIView commitAnimations]; 

: 당신은 둘 다 전화 :

[viewOggetto setFrame:aFrame]; 
[viewOggetto.view setFrame:aFrame]; 

을 그것의 UIViewController의 가정이/PROVA의 COSI를 '시도

ciao, luca

+0

grazie Luca. 내가 게시 한 코드를 시도했지만 아무 것도 변경되지 않았습니다. 그래도 프레임이 제대로 애니메이트되지만 애니메이션 중에는 내용의 크기가 조정되지 않습니다. 어쩌면 문제는 NIB 파일을 사용하여 viewOggetto를 초기화하는 것일 수 있습니다. – Lorenzo

2

즉시 전체 화면으로 표시되는 대신 일어날 일이 무엇인지 분명하지 않습니다. 페이드 인하려는 거니? 하위 뷰의 alpha 속성을 0으로 설정하고 애니메이션을 시작하기 전에 self.view에 추가하십시오. 그런 다음 alpha 속성을 애니메이션 내에서 1로 설정하십시오.

+0

Nope. 처음에는 더 작은 프레임을 설정했습니다. [viewOggetto aFrame]; 그러면보기가 0.5 초 안에 전체 화면으로 이동합니다. 그러나 내가 게시 한 코드를 사용하면 뷰 프레임이 올바르게 작동하지만 뷰의 내용이이 '줌'애니메이션을 따르지 않고 전체 화면으로 이동합니다. 애니메이션을 따라 콘텐츠를 만들 수있는 방법이 궁금합니다. – Lorenzo

+0

애니메이션을 시작하기 전에 초기 프레임이있는 하위 뷰를 추가하십시오. – Jim

+0

죄송합니다. 제 코드를 잘못 작성했습니다. 첫 번째 명령은 [viewOggetto setFrame : aFrame]이였습니다 (지금 편집 됨). 어쩌면 지금 내가 처음에 의미했던 것을 이해할 수도 있습니다. – Lorenzo

0

짐의 답변에 추가하고 싶습니다. UIView 애니메이션은 한 컨텍스트에서 다른 컨텍스트로 UIView를 애니메이션화합니다. 문맥이 [UIView beginAnimations:nil context:NULL]; 전에 존재하지 않으면 밑면 효과가 발생합니다. 뷰가 서브 뷰에 추가되지 않은 경우 컨텍스트가 존재하지 않습니다.

+0

코드를 편집했습니다. 첫 번째 줄은 [viewOggetto setFrame : aFrame]이되어야합니다. – Lorenzo

+0

아무 것도 변하지 않을 것입니다. beginAnimation을 호출 할 때 화면에 없으면 애니메이션을 적용 할 수 없습니다. beginAnimation을 호출 한 후 화면에보기를 추가하는 중 – Rudiger

+0

실제로 애니메이션이 작동합니다. 내 문제는보기의 프레임 만 애니메이션의 대상이된다는 것입니다. 뷰 안쪽 (UILabels 등)의 애니메이션은 애니메이션이 진행되는 동안 화면에서 해고됩니다. 뷰의 프레임에 따라 애니메이션 내용을 어떻게 만들 수 있는지 궁금합니다. – Lorenzo