[ App ] 3초만에 이미지가 넘어가는 갤러리 앱 만들기

Woong·2022년 5월 1일
0

selector를 활용해서 3초에 한번씩 사진이 넘어가는 갤러리 앱을 만들어보자!


1. 화면구성

상단라벨 : 그림의 파일명을 표기할 라벨
하단이미지뷰 : 그림을 보여줄 이미지뷰



2. 연결

전역변수 : lblTitle(상단라벨) , imgView(하단이미지뷰)를 연결시켜준다.
액션부 : X



3. Asset에 이미지추가 + 이미지파일명 배열을 생성

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"]

전역변수부에 이미지파일명을 가지는 배열을 생성해주자!



4. 3초마다 업데이트되는 타이머 정의

    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 추가시켜!

🖕아니 근데 이렇게하면 10페이지넘어가면 더 이상 표시안되는거아님?

    @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
        }
    }
}
profile
https://github.com/iOS-Woong

0개의 댓글