본문 바로가기
ios 뽀개기/ios 응용해보기

탭뷰

by 인생여희 2017. 12. 15.
반응형

탭뷰 



피커뷰 컨트롤러

//

//  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

댓글