2011-03-10 2 views
4

단추에 두 개의 이미지가 있습니다. 하나는 정상 상태 용이고 다른 하나는 선택된 상태입니다. 선택한 상태에서 다시 정상 상태로 변경하면 몇 초 동안 크로스 페이드 효과가 발생합니다.xcode에서 선택한 상태와 선택되지 않은 상태 사이에서 버튼을 교차 페이드하는 방법은 무엇입니까?

내가 지금하고있는 것은 두 개의 UIView 애니메이션을 사용하고 있습니다. 첫 번째 애니메이션은 1.0의 알파에서 0.5의 알파로 이동합니다. 그런 다음 정상 상태로 전환하고 .5 알파에서 1.0 알파로 이동하는 두 번째 UIView 애니메이션을 수행합니다.

나는 시각 효과 (선택에서 보통 이미지로의 급격한 변화)에 흥분하지 않는다. UIView가 더 이상 사용되지 않아야한다는 것도 읽었습니다. 그럼 올바른 접근법은 무엇입니까? 코드 샘플도 매우 유용합니다.

답변

1

나는 마침내 내가 필요한 것을 발견 대신 내 버튼의 선택과 선택되지 않은 상태로 이미지를 할당, 나는 투명 내 버튼을 유지하고 처음에 1.0의 알파와 함께 해당 버튼 대신 두 개의보기를 추가 및 0.0. 버튼이 선택 I 선택기에 규정 된 방법을 입력하면 다음

, 나는 두 뷰간에 전환 애니메이션을 사용

버튼이 동안 움직이는 경우이 접근법은 또한 작동
NSArray * subviewArray = [button subviews]; 
    [UIView animateWithDuration:2.0 
        animations:^ { 
         ((UIView *)[subviewArray objectAtIndex:0]).alpha = 0.0; 
         ((UIView *)[subviewArray objectAtIndex:1]).alpha = 1.0; 
        } 
        completion:nil]; 

전이. 나는 이것이 다른 사람들이 미래에 같은 질문에 직면 할 수있게 도와주기를 바랍니다. 나이 들어

1

다음은 매우 간단하며 4 초 이내에 선택한 상태에서 선택되지 않은 상태로 전환됩니다. 유일한 문제는 버튼이 동시에 움직이는 경우 전환이 제대로 작동하지 않는다는 것입니다.

button.selected = TRUE; 
    CATransition *transition = [CATransition animation]; 
    transition.duration = 4.0; 
    transition.type = kCATransitionFade; 
    transition.delegate = self; 
    [button.layer addAnimation:transition forKey:nil]; 
    button.selected = TRUE; 
0

는 일 :

[UIView transitionWithView: button duration: 4.0 options: UIViewAnimationOptionTransitionCrossDissolve animations: ^{ 
    [button setSelected: !button.isSelected]; 
} completion: nil]; 

하지만 (한 통화 나를 위해 작동하지 않았다 떠나) 그 다음의 호출과 같은 UIControlStateHighlighted-UIImageUIControlStateSelected을 설정 한 경우에만이 일이 를 :

[button setImage: img forState: UIControlStateSelected | UIControlStateHighlighted]; 
[button setImage: img forState: UIControlStateSelected]; 
[button setImage: img forState: UIControlStateHighlighted];