나는 UIButton
을 가지고 있으며, titleLabel
속성에 액세스하여 텍스트를 변경하고 싶습니다. 그러나 단추에서 텍스트를 변경하는 방법은 처음에는 아주 작은 크기로 축소 한 다음 즉시 보이지 않는 상태로 변경 한 다음 다시 크기를 조정하는 것입니다. 여기에 여러 게시물을 통해 검토 한 결과,이에 도달했습니다 :지연 후 UILabel의 텍스트를 움직이는 방법?
let changeText = CATransition();
changeText.type = kCATransitionReveal;
changeText.duration = 0.0;
changeText.timingFunction = CAMediaTimingFunction(name:kCAMediaTimingFunctionLinear);
submitButton.titleLabel?.layer.add(changeText, forKey: "changeTextTransition");
UIView.animateKeyframes(withDuration: 0.6, delay: 0, options: .calculationModeLinear, animations: {
//Zzzeeeewwwwwwwwww
UIView.addKeyframe(withRelativeStartTime: 0.0, relativeDuration: 0.5, animations: {
self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 0.001, y: 0.001);
})
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.0, animations: {
self.submitButton.titleLabel?.text = "Green";
})
//Wwwwwweeeeeeyyyyyppp
UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
self.submitButton.titleLabel?.transform = self.submitButton.titleLabel!.transform.scaledBy(x: 1000, y: 1000);
})
}, completion: nil)
문제는이 작동하지 않는다는 것입니다. 내가 얻는 것은 라벨이 축소되면서 "New Text"라는 단어가 빠르게 깜박이고, 다시 크기가 조정되면 여전히 "Old Text"입니다. 너무 이상해. 심지어 내 머리를 감싸기 시작하지도 못한다. 나는 그것이 일어난다 고 생각한다. 그것은 새로운 텍스트가 축소되기 전에 드러내는 전환을 재생한다는 것이다. (왜 duration = 0으로 지정했는지 모르겠다.) 그런 다음, 이전 텍스트를 되 돌린다. 것을
'fillMode'를'kCAFillModeBoth'로 설정하십시오. –
이 질문에 답을 얻지 못했지만 복잡한 애니메이션을 정의하고 https://github.com/airbnb/lottie-ios를 사용하여 멋진 애니메이션을 보여준 경험이있었습니다. Lottie는 After Effects 파일을 기반으로하는 https://github.com/bodymovin/bodymovin에서 만든 json 파일을 사용합니다. 애프터 이펙트 기술이 없어도 fivver에서 수행되는 간단한 작업을 수행 할 수 있습니다. –
@JonRose가 작동하지 않았습니다. 변경 없음. – QuantumHoneybees