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에 따라 변경하게끔 추가해준다.
(밑에 페이지 수를 알려주는 버튼과 미완성 확인 버튼..)