UISlider의 Thumb을 애니메이션으로 숨기기

5098 단어 iOSUIKitUISliderSwift
UISlider 의 Thumb (노브)를 Youtube 앱 플레이어처럼 애니메이션으로 표시/숨기기를 전환하고 싶다는 계기.



환경


  • Swift 4.2
  • Xcode 10.1

  • 코드


    // 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)
    

    참고


  • htps : //에서 ゔぇぺぺr. 아 ぇ. 코 m / Dokumen ON / Uiki t / Ui s r
  • h tps : // s c ゔ ぇ rf ぉ w. 코 m / 쿠에 s 치온 s / 12015785 / c 가후 네 t 란 s ぉ r 민 ゔ ぇ rt- 셍 ぁ r 마 t x / 12861415
  • h tps : // s t c ゔ ぇ rf ぉ w. 코m/아/7420022
  • 좋은 웹페이지 즐겨찾기