랭귀지/SWIFT
swift 피커 뷰 앱 만들기
유키공
2018. 1. 7. 09:00
피커 뷰(Picker View)
피커 뷰(Picker View)는 아이폰에서 원하는 항목을 선택할 수 있게 해주는 객체 입니다. 피커 뷰는 문자열을 선택하기 위한 객체 입니다. 여러가지 선택지 가운데 하나를 선택해야 하는 경우 피커 뷰를 사용하여 사용자가 선택할 수 있게 할 수 있습니다.import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
//이미지 파일명을 저장할 배열의 최대 크기를 지정합니다.
let MAX_ARRAY_NUM = 10
//피커뷰의 열의 개수를 지정 합니다.
let PICKER_VIEW_COLUMN = 1
//피커 뷰의 높이를 지정핳 상수를 선언
let PICKER_VIEW_HEIGHT:CGFloat = 80
//UIImage 타입의 배열 imageArray를 선언랍니다.
var imageArray = [UIImage?]()
//이미지 파일명을 저장할 배열 입니다.
var imageFileName = [ "1.jpg", "2.jpg", "3.jpg", "4.jpg", "5.jpg",
"6.jpg", "7.jpg", "8.jpg", "9.jpg", "10.jpg" ]
@IBOutlet weak var pickerImage: UIPickerView!
@IBOutlet weak var lblImageFileName: UILabel!
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
//i라는 변수를 0부터 MAX_ARRAY_NUM보다 작을 때까지 루프를 실행합니다.
for i in 0 ..< MAX_ARRAY_NUM {
//image라는 변수를 선언합니다.
//imageFileName[i]에 있는 파일명을 사용하여 UIImage 타입의 이미지를 생성합니다.
//생성한 이미지를 image라는 변수에 할당합니다.
let image = UIImage(named: imageFileName[i])
//이미지 뷰에 첫 번째 이미지가 나타납니다.
imageArray.append(image)
}
lblImageFileName.text = imageFileName[0]
imageView.image = imageArray[0]
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//피커뷰에 표시되는 열의 개수
func numberOfComponents(in pickerView: UIPickerView) -> Int{
return PICKER_VIEW_COLUMN
}
//피커뷰에 표시되는 행의 개수
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return imageFileName.count
}
//피커 뷰에게 컴포넌트의 높이를 정수 값으로 넘겨주는 델리게이트 메서드 입니다.
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
//PICKER_VIEW_HEIGHT 값인 80을 넘겨 줍니다.
return PICKER_VIEW_HEIGHT
}
//imageFileName에 저장되어 있는 파일명을 넘겨줍니다.
// func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String?{
// return imageFileName[row]
// }
//피커 뷰에게 컴포넌트의 각 열의 뷰를 UIView 타입의 값을 넘겨줍니다.여기서는 이미지 뷰에 저장되어있는 이미지를 넘겨줍니다.
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView{
//선택된 row에 해당하는 이미지를 imageArray에서 가져옵니다.
let imageView = UIImageView(image: imageArray[row])
//이미지 뷰의 프레임 크기를 설정합니다.
imageView.frame = CGRect(x: 0, y: 0, width: 100, height: 150)
//이미지 뷰를 리턴합니다
return imageView
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int){
lblImageFileName.text = imageFileName[row]
//사용자가 피커 뷰의 룰렛에서 선택한 row 값을 사용하여 imageArray 배열에서 row 값에 해당하는 이미지를
//가지고 옵니다.그리고 가져온 이미지를 이미지 뷰의 아웃렛 변수인 imageView.image에 저장합니다.
imageView.image = imageArray[row]
}
}