2013-05-29 6 views
1

저는 초보자 프로그래머입니다 & 저는 처음으로 iOS 프로젝트를하고 있습니다. 내 프로젝트에는 여러 개의 UIViewUIViewController이 있습니다. 각보기에서 나는 drawRect 메서드를 재정 의하여 여러 개의 원을 그렸습니다. 하나의 견해로는 직사각형을 그릴 필요가 있고 그것을 만질 때 애니메이션 아래에 또 다른 3 개의 직사각형을 그릴 것입니다. 나는 그것을하기위한 최선의 방법이 무엇인지 궁금해하고있었습니다! 터치 후보기를 다시 그리기 위해 setNeedsDisplay을 호출하고 다른 세 개의 사각형을 애니메이션으로 그립니다. 어떻게하면 이것을 얻을 수 있고 애니메이션으로이 특별한 것을 수행하는 데 가장 좋은 다른 방법이 있을까요?애니메이션을 사용하여 UIView 다시 그리기

답변

1

drawRect를 재정의하는 것이 타이머 아래에서 여러 번 다시 그리기해야하는 많은 유형의 애니메이션을 수행하기 때문에 최상의 솔루션이 아닐 수 있습니다. 그 외에도 드로잉은 CPU로 처리되므로 하드웨어 가속을 활용하지 못합니다.

세 직사각형이 보이기 전에 직사각형이 있어야하는 위치의 뷰 계층 구조에 세 개의 UIView를 추가하는 것이 좋습니다.

[UIView animateWithDuration:0.2 animations:^{ 
    rectView1.alpha = 1.0; 
    rectView2.alpha = 1.0; 
    rectView3.alpha = 1.0; 
}]; 

: 그것은보기에 사각형을 애니메이션하는 시간이되면, 당신은 다음과 같은 코드를 사용할 수 있습니다 당신이 원하는 사각형의 색상에 각보기의 backgroundColor 속성을 설정하고 0으로 각보기의 alpha 값을 설정 물론 응용 프로그램에 맞는 애니메이션의 지속 시간을 변경하고 rectViews의 다른 속성도 변경할 수 있습니다. 직사각형이 희미 해 지도록 이 측면에서 날아오고 있다고 가정합니다. 애니메이션 전에 각 rectView의 frame 속성을 조정 한 다음 애니메이션 블록 내부에서 조정할 수 있습니다.

+0

위대한 solution.but 질문이 .. *이 상황에서'setneedsdisplay'를 사용해야합니까? 처음 세 번 호출하지 않고 세 가지 uiview를 선언 할 수있는 곳 – sujat

+0

drawRect로 다시 그리도록보기를 원할 때 setNeedsDisplay를 호출해야하지만보기의 하위보기를 조작하는 경우에는 * 부모보기를 다시 그리지 않아야하고 실제로 setNeedsDisplay를 호출하면 프로그램의 성능이 떨어질 수 있습니다. –

+0

고마워. 바라건대 그것은 내 일을 완수하는 데 도움이 될 것입니다 .... – sujat

관련 문제