티스토리 뷰

CATransaction 사용하여 애니매이션되는 속성(트리거 여부, 타이밍, 기간 등)을 설정할 수 있다.


아래 코드는 navigationController에서 pushViewController를 사용하여 화면을 전환할 경우, complete method를 추가하여 사용할 수 있도록 컨트롤러를 확장한 코드이다.

// navigationController 확장
extension UINavigationController {
    // pushViewController 실행후 complete callback 구현 가능하도록 수정
    public func pushViewController(viewController: UIViewController, animated: Bool, completion: (() -> Void)?) {
        CATransaction.begin()
        CATransaction.setAnimationDuration(2)      // sleep 2 seconds
        CATransaction.setCompletionBlock(completion)
        CATransaction.setCompletionBlock {
            // callback 함수를 받지 않고 직접 코드 작성도 가능함.
        }
        pushViewController(viewController, animated: animated)
        CATransaction.commit()
    }  
}

// 메서드 실행 예시
navigationController.pushViewController(viewController: presentingView!, animated: true) {

    // 위 코드에서 complete에 들어갈 코드블럭
    self.view.removeFromSuperview()
}


'Swift' 카테고리의 다른 글

UITextView - attributed text center alignment  (0) 2018.04.03
keyboard height 구하는 방법  (0) 2018.04.03
App Store Icon 에러!!  (0) 2018.03.29
아이폰 status bar 배경색 변경하기  (0) 2017.06.07
APNS 구현해보기  (0) 2017.02.22
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함