네비게이션바 뒤로가기 제스쳐


설명

네비게이션바에 있는 기본적인 제스쳐 입니다. 화면 왼쪽끝에서 오른쪽으로 밀어서 전 화면으로 돌아가는 제스쳐입니다.
아이폰 유저에게는 정말 익숙한 화면전환 제스쳐 입니다. 제스쳐 활성화를 하지 않으면 전혀 반응을 하지 않습니다. 맨 상위뷰에서 해주시면 하위뷰에는 자동으로 적용됩니다.


사용환경

* Swift 4.2
* XCode 10.0

코드

class Main: UIViewcontroller, UIGestureRecognizerDelegate {
    override func viewDidLoad() {
        super.viewDidLoad()

        self.navigationController?.interactivePopGestureRecognizer?.delegate = self
    }
}

맞치며

코드 한줄로 간단하게 구현이 가능합니다.(처음 아이폰 개발 시작할때.. 몰라서 정말 많이 삽질 했었습니다..)
틀린점이나 궁금한점 있으시면 댓글 남겨주세요. 감사합니다 :)





최상단 뷰컨트롤러 가져오기


설명

뷰가 많이 중첩 되다보면 잘못된 구조로 인해 뷰 전환등을 사용을 못하게 되는 경우가 있습니다. 그렇게 안 만드는 것이 제일 중요하지만 디자인등 여러가지를 고려하다보면 피치 못하게 만들어지는 경우가 많습니다. 그럴때 사용 하면 유용한 extension 입니다.


사용환경

* Swift 4.2
* XCode 10.0

코드

extension UIApplication {
    class func topViewController(base: UIViewController? = UIApplication.shared.keyWindow?.rootViewController) -> UIViewController? {
        if let nav = base as? UINavigationController {
            return topViewController(base: nav.visibleViewController)
        }
        if let tab = base as? UITabBarController {
            if let selected = tab.selectedViewController {
                return topViewController(base: selected)
            }
        }
        if let presented = base?.presentedViewController {
            return topViewController(base: presented)
        }
        return base
}

//사용 방법
if let topVC = UIApplication.topViewController() {
     topVC.present(UIViewController(), animated: true, completion: nil)
}

맞치며

정말 뷰 계층에 공부가 필요한 이유중 하나입니다. 뷰계층 구조를 무시하고 만들다보면 진짜 어마어마한 결과물이 나옵니다,, 물론 개발자가 잘못 만드는 경우도 있지만 디자인 때문에 어쩔 수 없게 나오는 경우도 많습니다. 디자이너, 기획자와 잘 얘기(?)를 해서 원만하게 해결하는 것도 좋은 방법중 하나입니다. 틀린점이나 궁금한점은 댓글 남겨 주시면 답변 해드리겠습니다. 감사합니다 :)





UIScrollView 상단, 하단 이동시키기


설명

이번 포스트에서는 UIScrollView 상,하단으로 이동하는 코드 입니다. UITableView, UICrollectionView등 UIScrollView를 상속받은 모든 뷰에서 사용이 가능합니다. ScrollRectToVisible or setContentOffset 메소드를 통해 어디든지 원하는 위치에 스크롤로 이동 시킬 수 있습니다.


사용환경

* Swift 4.2
* XCode 10.0

코드

테이블뷰(스크롤뷰) 상단으로 이동하는 코드

yourScrollView.scrollRectToVisible(CGRect(x: 0, y: 0, width: 1, height: 1), animated: true)

or

yourScrollView.setContentOffset(CGPoint(x: 0, y: 0), animated: true)

테이블뷰(스크롤뷰) 하단으로 이동하는 코드

yourScrollView.scrollRectToVisible(CGRectMake(0,
                                               yourScrollView.contentSize.height-yourScrollView.bounds.height,
                                              yourScrollView.bounds.size.width,
                                              yourScrollView.bounds.size.height),
                                   animated: true)

or

yourScrollView.setContentOffset(CGPoint(x: 0,
                                        y: yourScrollView.contentSize.height-yourScrollView.bounds.height),
                                animated: true)

맞치며

UIScrollView를 사용해서 작업을 할 경우 유용하게 사용되는 메소드 입니다. 틀린점이나 궁금한점 있으면 댓글을 남겨주세요. 감사합니다 :)



+ Recent posts