개발자 코드(Code)/Swfit
IOS) Swipe Guesture + PageControl (한 손가락 넘기기 + 두 손가락 넘기기 + PageControl 사용)
Chain X
2020. 8. 27. 14:55
728x90
반응형
//
// ViewController.swift
// SwipeGuestureQ
//
// Created by Leo_Jang on 27/08/2020.
// Copyright © 2020 Leo_Jang. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var imgView: UIImageView!
@IBOutlet weak var pageControl: UIPageControl!
//왼쪽, 오른쪽만 사용
var images = ["flower_01.png","flower_02.png","flower_03.png","flower_04.png","flower_05.png","flower_06.png"]
let numberofTouches = 2
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
// PageControl 설정 값
pageControl.numberOfPages = images.count
pageControl.currentPage = 0
pageControl.pageIndicatorTintColor = UIColor.green
pageControl.currentPageIndicatorTintColor = UIColor.blue
imgView.image = UIImage(named: images[0])
// 한 손가락 Guesture
// 오른쪽
let swipeRight = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_ :)))
swipeRight.direction = UISwipeGestureRecognizer.Direction.right
self.view.addGestureRecognizer(swipeRight)
// 왼쪽
let swipeLeft = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGesture(_:)))
swipeLeft.direction = UISwipeGestureRecognizer.Direction.left
self.view.addGestureRecognizer(swipeLeft)
// 두 손가락 Guesture
// 오른쪽
let swipeRightMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_:)))
swipeRightMulti.direction = UISwipeGestureRecognizer.Direction.right
swipeRightMulti.numberOfTouchesRequired = numberofTouches
self.view.addGestureRecognizer(swipeRightMulti)
// 왼쪽
let swipeLeftMulti = UISwipeGestureRecognizer(target: self, action: #selector(ViewController.responseToSwipeGestureMulti(_:)))
swipeLeftMulti.direction = UISwipeGestureRecognizer.Direction.left
swipeLeftMulti.numberOfTouchesRequired = numberofTouches
self.view.addGestureRecognizer(swipeLeftMulti)
}
// 한 손가락 Guesture
@objc func responseToSwipeGesture(_ gesture: UISwipeGestureRecognizer){
if let swipeGesture = gesture as? UISwipeGestureRecognizer{
// 발생한 이벤트가 각 방향의 스와이프 이벤트라면
// pageControl이 가르키는 현재 페이지에 해당하는 이미지를 imageView에 할당
switch swipeGesture.direction{
case UISwipeGestureRecognizer.Direction.right:
pageControl.currentPage -= 1
imgView.image = UIImage(named: images[pageControl.currentPage])
case UISwipeGestureRecognizer.Direction.left:
pageControl.currentPage += 1
imgView.image = UIImage(named: images[pageControl.currentPage])
default:
break
}
}
}
// 두 손가락 Guesture
@objc func responseToSwipeGestureMulti(_ gesture: UISwipeGestureRecognizer){
if let swipeGesture = gesture as? UISwipeGestureRecognizer{
// 발생한 이벤트가 각 방향의 스와이프 이벤트라면
// pageControl이 가르키는 현재 페이지에 해당하는 이미지를 imageView에 할당
switch swipeGesture.direction{
case UISwipeGestureRecognizer.Direction.right: // UISwipeGestureRecognizer.방향. 오른쪽
pageControl.currentPage -= 1 // pageControl에서 시작하여. 현재페이지 부터 + 1을or배열에 +1 을한다.
imgView.image = UIImage(named: images[pageControl.currentPage]) // 배열안에 있는 이미지들 = UIImage(이름: var:imgages 배열안에 [pageControl에 있는.현재페이지] 즉 배열안에 있는 이미지들은 누르면 배열순서대로 이미지가 바뀐다.
case UISwipeGestureRecognizer.Direction.left:
pageControl.currentPage += 1
imgView.image = UIImage(named: images[pageControl.currentPage])
default:
break
}
}
}
// PageControl
@IBAction func imgChange(_ sender: UIPageControl) {
imgView.image = UIImage(named: images[pageControl.currentPage])
}
} // ------------------------
반응형