selector를 활용해서 3초에 한번씩 사진이 넘어가는 갤러리 앱을 만들어보자!
상단라벨 : 그림의 파일명을 표기할 라벨
하단이미지뷰 : 그림을 보여줄 이미지뷰
전역변수 : lblTitle(상단라벨) , imgView(하단이미지뷰)를 연결시켜준다.
액션부 : X
Asset창에 내가 띄우고자하는 파일을 드래그앤드롭 해주면 된다!
class ViewController: UIViewController {
@IBOutlet weak var lblTitle: UILabel!
@IBOutlet weak var imgView: UIImageView!
var imageFileName = ["w1.png","w2.png","w3.png","w4.png","w5.png","w6.png","w7.png","w8.png","w9.png","w10.png"]
전역변수부에 이미지파일명을 가지는 배열을 생성해주자!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
}
@objc func updateTime(){ //#selector를 받아주기위해 @objc func 사용
lblTitle.text = imageFileName[numImage]
// numImage 숫자에 맞춰 상단라벨에 이미지파일 이름을 보여줘
imgView.image = UIImage(named: imageFileName[numImage])
// numImage 숫자에 맞춰 하단이미지뷰에 이미지를 보여줘
numImage += 1
// 그리고 numImage 숫자를 1 추가시켜!
@objc func updateTime(){
lblTitle.text = imageFileName[numImage]
imgView.image = UIImage(named: imageFileName[numImage])
numImage += 1
// numImage 숫자를 1 추가시켜!
// 만약, numimage가 >= imageFileName배열의 갯수(10개)와 같거나 크면 0으로 다시 만들어!
if numImage >= imageFileName.count{
numImage = 0
}
}
}
이렇게해주면 numImage = 10 값이 되면 자동으로 0으로 변경되어 다시 반복실행됨.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var lblTitle: UILabel!
@IBOutlet weak var imgView: UIImageView!
var numImage = 0
// 이미지의 순서를 결정할 변수 생성
var imageFileName = ["w1.png","w2.png","w3.png","w4.png","w5.png","w6.png","w7.png","w8.png","w9.png","w10.png"]
// 이미지파일명 Array 생성
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
Timer.scheduledTimer(timeInterval: 3.0, target: self, selector: #selector(updateTime), userInfo: nil, repeats: true)
} //3초마다 업데이트되는 타이머
@objc func updateTime(){ // #selector를 받아주는 @objc func 함수
lblTitle.text = imageFileName[numImage] //상단라벨 파일명 [numImage]에 따라 표기
imgView.image = UIImage(named: imageFileName[numImage]) //하단이미지뷰 이미지[numImage]에 따라 표기
numImage += 1
// 업데이트될때마다 numImage를 +=1 만큼 추가시켜!
// 만약, numImage가 파일갯수인 10보다 크면 0으로 다시돌려서 다시 쌓도록하자 그럼 반복실행됨
if numImage >= imageFileName.count{
numImage = 0
}
}
}