2014-12-09 1 views
-2

위치를 전환하는 애니메이션을 만들었습니다. 애니메이션은 정상적으로 작동하지만 포 그라운드의 버튼을 파괴합니다.회전 배경 뷰의 애니메이션이 전경의 버튼과 겹칩니다.

버튼에 영향을 미치지 않아야합니다. 이 원인은 무엇입니까?

enter image description here

video

CGFloat speedFactor = 3.0; 
CABasicAnimation *slotAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; 
[slotAnimation setToValue:[NSNumber numberWithFloat:M_PI_2]]; 
[slotAnimation setRemovedOnCompletion:NO]; 
[slotAnimation setFillMode:kCAFillModeBoth]; 
slotAnimation.duration = .3/speedFactor; 
[[self.fromPositionTextField layer] addAnimation:slotAnimation forKey:@"slotAnimation"]; 

CABasicAnimation *slotAnimation2 = [slotAnimation copy]; 
[slotAnimation2 setBeginTime:CACurrentMediaTime()+0.3/speedFactor]; 
[[self.toPositionTextField layer] addAnimation:slotAnimation2 forKey:@"slotAnimation"]; 
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(.6/speedFactor * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
    NSArray *positions = @[self.viewModel.fromPosition, self.viewModel.toPosition]; 
    self.viewModel.fromPosition = positions[1]; 
    self.viewModel.toPosition = positions[0]; 

    CABasicAnimation *slotAnimation3 = [CABasicAnimation animationWithKeyPath:@"transform.rotation.x"]; 
    [slotAnimation3 setToValue:[NSNumber numberWithFloat: M_PI *.125/4.0]]; 
    [slotAnimation3 setRemovedOnCompletion:NO]; 
    [slotAnimation3 setFillMode:kCAFillModeBoth]; 
    slotAnimation3.duration = .3/speedFactor; 
    [slotAnimation3 setBeginTime:CACurrentMediaTime()+0.3/speedFactor]; 
    [[self.fromPositionTextField layer] addAnimation:slotAnimation3 forKey:@"slotAnimation2"]; 

    CABasicAnimation *slotAnimation4 = [slotAnimation3 copy]; 
    [slotAnimation4 setBeginTime:CACurrentMediaTime()+0.6 /speedFactor]; 
    [[self.toPositionTextField layer] addAnimation:slotAnimation4 forKey:@"slotAnimation2"]; 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.2/speedFactor * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ 
     [self.fromPositionTextField.layer removeAllAnimations]; 
     [self.toPositionTextField.layer removeAllAnimations]; 

    }); 
}); 

답변

1

버튼의 Z- 색인을 변경 버튼의 층 (그것의 CALayer 객체의)의 zPosition 속성을 사용하여 시도.

myButton.layer.zPosition = 100; 

큰 값은 "맨 위"에 있습니다. 기본값은 0입니다.

레이어에 액세스하려면 QuartzCore 프레임 워크를 가져와야합니다.

변경된 답변 100 대신 주석을 복사하기 만하면됩니다.

관련 문제