[TIL] 2021.03.02

승아·2021년 3월 2일
0

👩🏻‍💻 오늘 공부한 내용

Loading PopUp View ( 참고 사이트 )

  • LoadingUHD class 생성
class LoadingHUD: NSObject {
    static let sharedInstance = LoadingHUD()
    private var popupView: UIImageView?

    class func show() { // popupView를 띄울 함수
    }

    class func hide() { // popupView를 제거할 함수
    }

    private class func getAnimationImageArray() -> [UIImage] { // loading image 
    }
}
  • show()
class func show() {
    let popupView = UIImageView(frame: CGRect(x: 0, y: 0, width: 150, height: 150)) // 150 x 150인 UIImageView 생성
    
    popupView.backgroundColor = UIColor.clear
    popupView.animationImages = LoadingHUD.getAnimationImageArray() // 애니메이션 이미지
    popupView.animationDuration = 0.8 // 이미지별 지속시간
    popupView.animationRepeatCount = 0 // 0일 경우 무한 반복
	
    // 항상 일 위에 보여야 되기 때문에 UIApplication의 keyWindow에 view를 add 해야 함 
    if let window = UIApplication.shared.keyWindow {
        window.addSubview(popupView)
        popupView.center = window.center
        popupView.startAnimating()
        sharedInstance.popupView?.removeFromSuperview()
        sharedInstance.popupView = popupView
    }
}
  • hide()
class func hide() {
    if let popupView = sharedInstance.popupView {
        popupView.stopAnimating()
        popupView.removeFromSuperview()
    }
}
  • 전체 코드
class LoadingHUD: NSObject {
    private static let sharedInstance = LoadingHUD()
    private var popupView: UIImageView?
   

    class func show() {
        let popupView = UIImageView(frame: CGRect(x: 0, y: 0, width: 150, height: 150))
        
        popupView.backgroundColor = UIColor.clear
        popupView.animationImages = LoadingHUD.getAnimationImageArray()
        popupView.animationDuration = 0.8
        popupView.animationRepeatCount = 0

        if let window = UIApplication.shared.keyWindow {
            window.addSubview(popupView)
            popupView.center = window.center
            popupView.startAnimating()
            sharedInstance.popupView?.removeFromSuperview()
            sharedInstance.popupView = popupView
        }
    }

    class func hide() {
        if let popupView = sharedInstance.popupView {
            popupView.stopAnimating()
            popupView.removeFromSuperview()
        }
    }

    private class func getAnimationImageArray() -> [UIImage] {
        var animationArray: [UIImage] = []
        animationArray.append(UIImage(named: "Loading1")!)
        animationArray.append(UIImage(named: "Loading2")!)
        animationArray.append(UIImage(named: "Loading3")!)

        return animationArray
    }
}
  • Loading 이미지


Swift static 메서드와 class 메서드 ( 참고 사이트 )

  • 공통점 : 인스턴스화 하지 않고 클래스로부터 직접 메서드 호출이 가능하다.
  • 차이점 : static 메서드는 오버라이드 불가, class 메서드는 오버라이드 가능. class와 static은 동일한 개념이기 때문에 override 후 static 서드를 class 메서드로 class 메서드를 static 메서드로 오버라이드 할 수 있다.

✍🏻 오늘은...

이제 진짜진짜 완성 되기 직전!! 한 가지 버그만 해결하면 되는데 원인을 도통 모르겄다 ~ 태그를 추가할 때 tag갯수가 0개면 tagView의 사이즈를 0으로 바꾸고 tag를 추가하면 tagView 사이즈를 다시 65로 바꾸는 부분에서 tag가 0개에서 1개로 될 때 collectionView reloaddata가 실행되지 않고 2개를 추가할 때 부터 collectionView reloaddata 실행 된다.. 도대체 뭐가 문제인지 내일 계속 찾아봐야겠다. 그리고 iOS 두번째 앱은 어떤 식으로 만들지도 고민중이다.. 앱 두개는 만들어야 취직을 할 수 있지 않겠냐며 ~ 그럼 3월달도 화이팅 👍🏻

0개의 댓글