728x90
Picker View 룰렛을 활용한 Image Viewer
결과 화면
포인트
코드 & 설명
//
// ViewController.swift
// PickerView
//
// Created by HwangSeungyeon on 2020/07/12.
// Copyright © 2020 HwangSeungyeon. All rights reserved.
//
import UIKit
//pickerView의 Delegate클래스 상속받기 위해서 Delegate & DataSource 추가
class ViewController: UIViewController, UIPickerViewDelegate ,UIPickerViewDataSource {
//피커뷰가 동작하는데 필요한 변수 및 상수 추가
let MAX_ARRAY_NUM = 6 //이미지 파일명 저장 최대 갯수
let PICKER_VIEW_COLUMN = 1 //피커뷰 열의 갯수
let PICKER_VIEW_HEIGHT:CGFloat = 80
var imageArray = [UIImage?]() //UI Type의 배열 선언
var imageFileName = ["1.png","2.png","3.png","4.png",
"5.png","6.png"]
@IBOutlet var pickerImage: UIPickerView! //pickerView 아웃렛 변수
@IBOutlet var lblImageFileName: UILabel! //selectedItem 아웃렛 변수
@IBOutlet var imageView: UIImageView! //imageView 아웃렛 변수
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
//MAX ARRAY만큼의 For문을 돌려서 imageFileName안에 있는 이미지를 UIImage 배열에 넣어 준다
for i in 0 ..< MAX_ARRAY_NUM {
let image = UIImage(named: imageFileName[i])
imageArray.append(image)
}
//첫번째 이미지 할당
lblImageFileName.text = imageFileName[0]
imageView.image = imageArray[0]
}
//피커뷰에게 컴포넌트 수를 넘겨준다 여기서는 1(Delegate Method)
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return PICKER_VIEW_COLUMN
}
//PickerView의 Row 높이 지정
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return PICKER_VIEW_HEIGHT
}
//피커뷰에게 컴포넌트의 열의 개수 정수값으로 넘겨줌, 피커뷰에서 해당열에서 선택할 수 있는 행의 개수(데이터 개수)(Delegate Method)
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return imageFileName.count
}
//titleForRow인수를 가지는 Delegate Method , 피커뷰에게 컴포넌트의 각 열의 타이틀을 문자열로 넘겨줌
// func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
// return imageFileName[row]
// }
//피커뷰에 이미지 title 대신 image를 넣는다
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let imageView = UIImageView(image:imageArray[row])
imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 150)
return imageView
}
//아래의 label에 선택한 파일명 저장, 출력
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
lblImageFileName.text = imageFileName[row]
imageView.image = imageArray[row] //피커뷰에서 선택한 이미지(row)해당하는 이미지 가져온다 -> 출력
}
}
전체 코드
출처 : Do it 스위프트로 앱 만들기
728x90
'Mobile Platform > IOS' 카테고리의 다른 글
[IOS] Do it(5) 전구를 만들어보자(Alert App) 구현 예제! (0) | 2020.07.16 |
---|---|
[IOS] Xcode 개발 관련 유용한 단축키 (0) | 2020.07.14 |
[IOS] IOS 개발자 Road Map(2019.ver) (0) | 2020.07.12 |
[IOS] Do it(3) DatePicker 사용하여 알람 만들기 (0) | 2020.07.11 |
[IOS] Do it(2) Image Viewer 만들기 (0) | 2020.07.11 |