UIkit- 6

김정현·2023년 6월 14일
0

UIKit

목록 보기
8/14
post-thumbnail

OnBoarding

 func makebottomButton() {
        let button = UIButton()
        button.setTitle("확인", for: .normal)
        button.setTitleColor(.black, for: .normal)
        button.backgroundColor = .systemBlue
        button.addTarget(self, action: #selector(dismissPageVC), for: .touchUpInside)
        
        self.view.addSubview(button)
        button.translatesAutoresizingMaskIntoConstraints = false //오토레이아웃 설정하기 위해 필수
        button.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
        button.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
        button.rightAnchor.constraint(equalTo: self.view.rightAnchor).isActive = true
        button.heightAnchor.constraint(equalToConstant: 50).isActive = true

이런식으로 버튼 함수를 따로 분리하여 제작한다. 그리고 세번째 창에서만 버튼이 나와 클릭하면 사라지는 함수를 구현한다.

   bottombuttonmargin = button.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0)
        bottombuttonmargin?.isActive = true
        
        hideButton()
extension OnBoardingPageViewController: UIPageViewControllerDelegate{
    func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) {
        
        guard let currentVC = pageViewController.viewControllers?.first else{
            return
        }
        
        guard let currentIndex = pages.firstIndex(of: currentVC) else{
            return
        }
        
        if currentIndex == pages.count - 1 {
            self.showButton()
        }else{
            self.hideButton()
        }
        
        UIView.animate(withDuration: 0.5) {
            self.view.layoutIfNeeded()
        }
    }
        func showButton() {
            bottombuttonmargin?.constant = 0
        }
        
        func hideButton() {
            bottombuttonmargin?.constant = 100
        }
}

익스텐션으로 currentIndex와 버튼을 숨김기능 등 구현하고 정상적으로 설계한것같았는데.. 이상하게 버튼이 나오지 않는다. 1시간이 넘게 비교해봤지만 문제는 없는거같은데.. 일시적 오류일 수도 있으니 나중에 다시한번 실행해봐야겠다.

이런식으로 아예 버튼이 사라져버린다. 그래서 아마도 문제가 발생했다면 해당페이지를 표시하는 if 절쪽이나 currentIndex 값을 제대로 받지 못하거나 둘중 하나일것같다. 지금은 아무리 찾아도 보이지 않으니 내일 다시 한번 확인해봐야겠다.

이문제는 뒤로하고 다음은 밑에 해당페이지를 만들어 주는 기능이다.

func makepagecontrol() {
        self.view.addSubview(pageControl)
        pageControl.translatesAutoresizingMaskIntoConstraints = false
        pageControl.currentPageIndicatorTintColor = .black
        pageControl.pageIndicatorTintColor = .lightGray
        pageControl.numberOfPages = pages.count
        pageControl.currentPage = startIndex
        
        pageControl.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: 0).isActive = true
        pageControl.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
    }
    

이런식으로 새로운 함수를 만들고 ,
currentIndex에 따라 변경하게끔 추가해준다.

(밑에 페이지 수를 알려주는 버튼과 미완성 확인 버튼..)

0개의 댓글