2017-10-14 3 views
0

버튼이 작동하기 전에 사용자가 선택해야하는보기가 있습니다. 이를보다 명확히하기 위해, 회색으로 표시된 버튼을 먼저 누르면 깜박이는 부분을 나타내는 요소를 표시하려고합니다. 나는. 나는 이것이 그 상태의 오류임을 나타내 려하고, 먼저 사용해야 할 UI 요소에 사용자의주의를 환기시킨다.UI 요소를 깜박이 게하여 오류 표시

두 번 빠르게 (아래 코드에서 self.display) 요소가 깜박 나의 현재 시도는 다음과 같다 :

@IBAction func inactiveButtonClick() { 
    let period = 0.16 

    UIView.animate(withDuration: period/2, delay: 0.0, options: [.curveEaseInOut, .autoreverse, .repeat], animations: { 
     self.display.alpha = 0 
    }, completion: { _ -> Void in 
     self.display.alpha = 1 
    }) 

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + period*2, execute: { 
     self.display.layer.removeAllAnimations() 
    }) 

} 

이 잘 매우을 작동하지만 100 %의 권리를 생각하지 않고, 애니메이션은 가끔씩 끝나기도 전에 끊어집니다. 나는 두 개의 애니메이션을 큐에 넣을 수 있다고 생각하지만,이 작업을 수행하는 더 쉬운 방법이 있는지 궁금합니다. UI 요소가 깜박 거리고 오류가 있음을 나타내는 기본 제공 방법이 있습니까? 그렇지 않은 경우 사용자에게이를 전달하는 "양호한"알려진 곡선 및 주파수 조합이 있습니까?

답변

1

키 프레임 애니메이션이 시나리오에 딱 맞는 것처럼 보일 :

UIView.animateKeyframes(withDuration: period, delay: 0.0, options: [], animations: { 
    UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5, animations: { 
     self.display.alpha = 0 
    }); 
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: { 
     self.display.alpha = 1 
    }); 
}, completion: nil); 

그래서 당신이 첫 번째 기간의 기간과 키 프레임 애니메이션을 만들 수 있습니다. 애니메이션 블록 안에는 상대 시작 시간 (키 프레임 애니메이션의 0과 1 - 1 사이에 길이, 따라서 지속 시간)을 지정하여 맞춤형 키 프레임 애니메이션을 추가 할 수 있습니다.

처음부터 시작하는 애니메이션을 추가하고 상대 기간은 0.5이므로 총 애니메이션 지속 시간의 1/2입니다. 두 번째 애니메이션은 전체 애니메이션의 1/2에서 처음 완료 될 때 시작되고 애니메이션 시간의 나머지 1/2 동안 계속됩니다.

희망이 도움이되었습니다.