Do it! 스위프트로 아이폰 앱 만들기
05장 피커 뷰 사용해 원하는 항목 선택하기
⇨ 피커 뷰에서 특정 행을 선택하면 해당 파일명과 이미지를 출력한다.
Library(+) 에서 Picker View 를 찾아 배치하기
"Selected Item:", "Item"을 출력할 2개의 레이블 배치하기
이미지 뷰 배치하고 Aspect Fill 로 설정하기
💡 Aspect Fill: 이미지 비율은 유지하면서 이미지 뷰를 채운다. 이미지 뷰와 이미지 비율이 맞지 않으면 이미지가 잘릴 수 있다.
피커 뷰, "Item" 레이블, 이미지 뷰에 대한 아웃렛 변수 추가하기
피커 뷰를 우클릭 드래그 하여 상단바 첫번째 아이콘(View Controller)에 놓고 delegate 클릭하기
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
let MAX_ARRAY_NUM = 10
let COLUMN = 1
var imageFileName = (1...10).map { String($0) + ".jpg" }
var imageArray = [UIImage?]()
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
imageFileName.forEach { imageArray.append(UIImage(named: $0)) }
lblImageFileName.text = imageFileName[0]
imgView.image = imageArray[0]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return COLUMN
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return imageFileName.count
}
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return imageFileName[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
lblImageFileName.text = imageFileName[row]
imgView.image = imageArray[row]
}
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: 100)
return imageView
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return CGFloat(100)
}
import UIKit
class ViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
let MAX_ARRAY_NUM = 10
let COLUMN = 1
var imageFileName = (1...10).map { String($0) + ".jpg" }
var imageArray = [UIImage?]()
@IBOutlet var pickerImage: UIImageView!
@IBOutlet var lblImageFileName: UILabel!
@IBOutlet var imgView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
imageFileName.forEach { imageArray.append(UIImage(named: $0)) }
lblImageFileName.text = imageFileName[0]
imgView.image = imageArray[0]
}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
return COLUMN
}
func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return imageFileName.count
}
//컴포넌트 룰렛 파일명 출력
func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return imageFileName[row]
}
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
lblImageFileName.text = imageFileName[row]
imgView.image = imageArray[row]
}
/* 컴포넌트 룰렛 이미지 출력
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: 100)
return imageView
}
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return CGFloat(100)
}
*/
}