UISlider의 Thumb을 애니메이션으로 숨기기
UISlider
의 Thumb (노브)를 Youtube 앱 플레이어처럼 애니메이션으로 표시/숨기기를 전환하고 싶다는 계기.환경
코드
// 1. Thumb の UIImageView を取得
extension UISlider {
var currentThumbImageView: UIImageView? {
guard let image = self.currentThumbImage else { return nil }
return self.subviews.compactMap({ $0 as? UIImageView }).first(where: { $0.image == image })
}
}
// 2-1. 表示
UIView.animate(withDuration: 0.3) {
self.slider.currentThumbImageView?.transform = CGAffineTransform(scaleX: 1, y: 1)
}
// 2-2. 非表示
UIView.animate(withDuration: 0.3) {
self.slider.currentThumbImageView?.transform = CGAffineTransform(scaleX: 0.001, y: 0.001)
}
포인트
//1. Thumb UIImageView 얻기
쉽게 할 수 없는 이유가 UISlider
에는 var currentThumbImage: UIImage? 프로퍼티에서 Thumb 의 UIImage
는 취할 수 있는데, UIImageView
를 취하는 프로퍼티가 없다고 하는 것입니다.subviews[2]
가 기본적으로 Thumb 의 UIImageView
와 같습니다만, 만약을 위해 위의 코드와 같이 세이프티에 취득하고 있습니다.
//2. 표시, 숨기기
이제는 transform으로 변경할 뿐입니다. 자유롭게 부디.
이번 예에서 말하면, 숨길 때 CGAffineTransform(scaleX: 0, y: 0)
라고 하는 것은 에러가 되므로 주의해 주십시오.
덤
단 Thumb를 지우는 것만으로 좋으면 아래에서 OK.
slider.setThumbImage(UIImage(), for: .normal)
참고
// 1. Thumb の UIImageView を取得
extension UISlider {
var currentThumbImageView: UIImageView? {
guard let image = self.currentThumbImage else { return nil }
return self.subviews.compactMap({ $0 as? UIImageView }).first(where: { $0.image == image })
}
}
// 2-1. 表示
UIView.animate(withDuration: 0.3) {
self.slider.currentThumbImageView?.transform = CGAffineTransform(scaleX: 1, y: 1)
}
// 2-2. 非表示
UIView.animate(withDuration: 0.3) {
self.slider.currentThumbImageView?.transform = CGAffineTransform(scaleX: 0.001, y: 0.001)
}
단 Thumb를 지우는 것만으로 좋으면 아래에서 OK.
slider.setThumbImage(UIImage(), for: .normal)
참고
Reference
이 문제에 관하여(UISlider의 Thumb을 애니메이션으로 숨기기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yuki0n0/items/47179bcb7913383ffdf0텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)