아래 영상처럼 Scroll view 를 사용해서 내용들을 페이지를 넘기듯이 넘겨보자!
주로 예시를 들면 베너에 활용할 수 있을 것이다.
우선 UIScrollView 와 UIPageControl 들을 생성해주자
생성과 동시에 frame 도 정해주자
class ViewController: UIViewController{
let scrollView : UIScrollView = {
let scrollView = UIScrollView()
//isPagingEnabled를 설정해주어야 페이지를 넘기듯이 넘기듯이 넘길 수 있음 -- 중요
scrollView.isPagingEnabled = true
return scrollView
}()
let pageControl : UIPageControl = {
let pageControl = UIPageControl()
//현재 페이지가 어떤 페이지인지 확인하는 동그라미 바 설정
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
return pageControl
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
view.addSubview(pageControl)
configure()
}
private func configure(){
}
//frame을 설정해줌으로써 View에 Layout들을 배치해줬다
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
pageControl.frame = CGRect(x: view.frame.width/2 - 200, y: view.frame.height - 100, width: 400, height: 20)
}
}
위 코드처럼 반드시 scrollView의 isPagingEnabled 를 설정해주자!
그래야 일반적인 스크롤뷰가 아닌 페이지를 넘길 수 있음!
이제 확인을 위해 Scroll View 안에 색이 있는 UI View 들을 추가해주자
private func configure(){
for x in 0..<3{
let uiViewWidth = view.frame.width
//scrollView 속 UIView 들이 이어저야하기 때문에 X 좌표를 정해줌
let xPos = uiViewWidth * CGFloat(x)
let uiView = UIView(frame: CGRect(x: xPos, y: 0, width: uiViewWidth, height: view.frame.height))
//확인을 위해 색을 정해준다
switch x {
case 0: uiView.backgroundColor = .red
case 1: uiView.backgroundColor = .blue
case 2: uiView.backgroundColor = .yellow
default:
return
}
scrollView.addSubview(uiView)
//scrollView의 크기를 정해준다
scrollView.contentSize.width = uiViewWidth * CGFloat(x + 1)
}
//pageControl의 점 개수를 정해준다
pageControl.numberOfPages = 3
}
configure를 이해했다면 Scroll View delegate 를 설정해주고 아래 함수를 작성하자
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let value = scrollView.contentOffset.x/scrollView.frame.size.width
pageControl.currentPage = Int(round(value))
}
Scroll View를 스크롤 했을때 pageControl 의 점이 바뀌는 것을 볼 수 있다
전체코드
//
// ViewController.swift
// BlogCode
//
// Created by Mac Book Pro on 2022/08/18.
//
import UIKit
class ViewController: UIViewController, UIScrollViewDelegate {
let scrollView : UIScrollView = {
let scrollView = UIScrollView()
scrollView.isPagingEnabled = true
return scrollView
}()
let pageControl : UIPageControl = {
let pageControl = UIPageControl()
pageControl.pageIndicatorTintColor = .lightGray
pageControl.currentPageIndicatorTintColor = .black
return pageControl
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(scrollView)
view.addSubview(pageControl)
scrollView.delegate = self
configure()
}
private func configure(){
for x in 0..<3{
let uiViewWidth = view.frame.width
let xPos = uiViewWidth * CGFloat(x)
let uiView = UIView(frame: CGRect(x: xPos, y: 0, width: uiViewWidth, height: view.frame.height))
switch x {
case 0: uiView.backgroundColor = .red
case 1: uiView.backgroundColor = .blue
case 2: uiView.backgroundColor = .yellow
default:
return
}
scrollView.addSubview(uiView)
scrollView.contentSize.width = uiViewWidth * CGFloat(x + 1)
}
pageControl.numberOfPages = 3
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
scrollView.frame = view.bounds
pageControl.frame = CGRect(x: view.frame.width/2 - 200, y: view.frame.height - 100, width: 400, height: 20)
}
func scrollViewDidScroll(_ scrollView: UIScrollView) {
let value = scrollView.contentOffset.x/scrollView.frame.size.width
pageControl.currentPage = Int(round(value))
}
}
'iOS > UIKit' 카테고리의 다른 글
[UIKit] : CollectionView Header 만들기 - (UICollectionReusableView) (0) | 2022.09.02 |
---|---|
[UIKit] : CollectionView 생성, Cell 등록하기 (0) | 2022.09.02 |
[UIKit] : UIButton 속 이미지 크기 조절하기 (0) | 2022.08.25 |
[UIKit] : 구조체 문자열 원하는 문자열로 바꾸기 (0) | 2022.08.24 |
[UIKit] 화면에 UIView, UIButton 추가하기 (Storyboard X) (0) | 2022.08.18 |