탭뷰
피커뷰 컨트롤러
//
// ViewController.swift
// pickerView
//
// Created by MacBookPro on 2017. 11. 21..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
//피커뷰를 동작시키기위해서는 피컵 델리케이트 클래스를 상속받아야 한다.
//또 피커뷰의 델리게이트 메서드를 추가해야 한다.
class DateViewController: UIViewController, UIPickerViewDelegate,UIPickerViewDataSource {
let MAX_ARRAY_NUM = 4
var imageArray = [UIImage?]() //uiimage 타입의 배열선언
let PICKPER_VIEW_COLUMN = 1
var imageFileName = ["aaa.jpg","bbb.jpg","ccc.jpg","ddd.jpg"]
//피커뷰 아웃렛 변수
@IBOutlet weak var pickerImage: UIPickerView!
//라벨 파일이름 아웃렛 변수
@IBOutlet weak var lbFileName: UILabel!
//이미지뷰 아웃렛 변수
@IBOutlet weak var imageView: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
//뷰가 로드되었을 때 max_array 개수 만큼 imagefileName에 있는 이미지를 가져와 uiimage타입의 상수 image에 할당하고
//할당된 image를 배열 imageArray에 추가한다.
//~ 4보다 작을때...
for i in 0 ..< MAX_ARRAY_NUM {
//각 파일명에 해당하는 이미지를 생성
let image = UIImage(named: imageFileName[i])
//생성된 이미지를 imageArray에 추가
imageArray.append(image)
//뷰가로드 되었을 때 첫 번째 파일명 출력
lbFileName.text = imageFileName[0]
//뷰가 로드 되었을 때 첫번째 이미지 출력
imageView.image = imageArray[0]
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
//1 - 피커뷰의 컴포넌트 수 설정
//피커뷰에게 컴포넌터의 수를 정수 값으로 넘겨주는 델리게이트 메서드이다.
//피커뷰의 컴포넌트는 피커 부에 표시되는 열의 개수를 의미 한다.
public func numberOfComponents(in pickerView: UIPickerView) -> Int{
//1
return PICKPER_VIEW_COLUMN
}
//1-2 피커뷰의 높이 설정
func pickerView(_ pickerView: UIPickerView, rowHeightForComponent component: Int) -> CGFloat {
return 50
}
//2 - 피커뷰의 개수 설정
// 피커뷰에게 컴포넌트의 열의 개수를 정수 값으로 넘겨줍니다. 이 값은 피커 뷰의 해당 열에서 선택할 수 있는 행의 개수(데이터개수)를 의미한다.
// 여기에서는 배열의 개수 값인 4를 넘겨준다.
public func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int{
return imageFileName.count
}
//3 - 피커뷰의 각 row의 타이틀 설정
//titleForRow 인수를 가지는 델리게이트 메서드입니다. 피커 뷰에게 컴포넌트의 각 열의 타이틀을 문자열 값으로 넘겨준다.
//여기서는 파일명을 넘겨 준다.
//func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
// return imageFileName[row]
//}
//4 피커뷰의 각 row의 view 설정
//롤렛에 문자대신 이미지 넣기
//피커뷰에게 컴포넌트의 각 열의 뷰를 uiview타입의 값으로 넘겨준다.
func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {
let imageView = UIImageView(image:imageArray[row])//선택된 row에 해당하는 이미지를 imageArray에서 가져 온다.
imageView.frame = CGRect(x: 0, y: 0, width:100, height: 50)
return imageView
}
//5 - 피거뷰가 선택되었을 때 설정
//사용자가 피커뷰의 롤렛에서 선택한 row값을 사용하여 배열에서 row값에 해당하는 문자열을 가지고 온다.
//그리고 가져운 문자열을 레이블의 아울렛변수에 저장한다.
func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
lbFileName.text = imageFileName[row]
//피커뷰의 롤렛이 선택되었을 때 동작하는 didselectrow 인수가 포함된 델리게이트 메서드의 맨 아랫 부분에
//선택한 이미지를 이미지뷰에 나타내주는 코드를 추가한다.ㅇ
imageView.image = imageArray[row]
}
}
이미지뷰 컨트롤러
//
// ViewController.swift
// imageView
//
// Created by MacBookPro on 2017. 11. 20..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
class ImageViewController: UIViewController {
var isZoom = false //확대여부를 나타내는 변수
var imgOn: UIImage? //켜진 전구 이미지가 있는 uiimage타입변수
var imgOff: UIImage? //꺼진 전구 이미지가 있는 uiimage타입변수
//이미지뷰에 대한 아웃렛 변수
@IBOutlet weak var imageView: UIImageView!
//버튼에 대한 아웃렛 변수
@IBOutlet weak var btnResize: UIButton!
//내가 만든 뷰를 불러왔을 때 호출되는 함수
override func viewDidLoad() {
super.viewDidLoad()
imgOn = UIImage(named:"on.jpg") // imgOn에 on.jpg 이미지를 할당
imgOff = UIImage(named:"off.jpg") // imgOff에 off.jpg 이미지를 할당
imageView.image = imgOn //위에서 할당한 imgOn이미지를 imgView에 할당
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
//button 함수
@IBAction func btnResizeAction(_ sender: UIButton) {
let scale:CGFloat = 2.0 //확대할 배율값
var newWidth:CGFloat, newHeight:CGFloat //확대할 크기의 계산 값을 보관할 변수
if(isZoom){
newWidth = imageView.frame.width/scale //이미지뷰의 프레임 너빗값을 scale로 나눔
newHeight = imageView.frame.height/scale
//이미지 뷰의 프레임 크기를 수정된 너비와 높이로 변경한다.
imageView.frame.size = CGSize(width: newWidth, height: newHeight)
btnResize.setTitle("확대", for: .normal)
}else{
newWidth = imageView.frame.width*scale
newHeight = imageView.frame.height*scale
imageView.frame.size = CGSize(width: newWidth, height: newHeight)
btnResize.setTitle("축소", for: .normal)
}
//isZoom 변수의 상태를 ㄴ경
isZoom = !isZoom
}
//switch 함수
@IBAction func switchOnOff(_ sender: UISwitch) {
if(sender.isOn)
{
imageView.image = imgOn
}else
{
imageView.image = imgOff
}
}
}
메인 뷰 컨트롤러
//
// ViewController.swift
// TapTap
//
// Created by MacBookPro on 2017. 12. 14..
// Copyright © 2017년 MacBookPro. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
@IBAction func imageView(_ sender: UIButton) {
tabBarController?.selectedIndex = 1
}
@IBAction func tabView(_ sender: UIButton) {
tabBarController?.selectedIndex = 2
}
}
'ios 뽀개기 > ios 응용해보기' 카테고리의 다른 글
xml parser (0) | 2017.12.18 |
---|---|
페이지 뷰 (0) | 2017.12.15 |
맵뷰 map view (0) | 2017.12.14 |
웹뷰 webview (0) | 2017.12.14 |
데이트 피커뷰와 alert이용해서 간단한 알람시계 구현 (0) | 2017.12.14 |
댓글