Image View
: 어플리케이션에서 사진을 보여 줘야할 때 사용하는 객체
이미지를 추가했을 때 이미지를 프로젝트 폴더로 복사하지 않고 사용할 경우 원본의 폴더가 변경되거나 삭제되었을 때 더 이상 해당 이미지를 사용 할 수 없게 된다. 그러므로 이미지를 프로젝트 폴더로 복사해서 사용할 것
이미지 뷰에서 이미지를 나타내는 콘텐트 모드(content Mode)에 따라 이미지가 다르게 표시된다.
(1) Scale to Fill - 기본 설정 값으로, 이미지 뷰의 크기에 맞게 이미지의 가로, 세로 비율이 변경 된다. 비율이 맞지 않으면 뭉개져 보임.
(2) Aspect Fit - 이미지의 가로, 세로 비율은 유지하면서 이미지 뷰의 ㅡ기에 맞게 이미지 크기를 바꾼다.
(3) Aspect Fill - 이미지의 비율을 유지하멵서 이미지 뷰를 채움. 이미지 뷰와 이미지 비율이 맞지 않으면 이미지가 넘쳐서 잘릴 수 있다.
(4) Center - 이미지의 원본 크기를 유지한 채 이미지의 중앙을 이미지 뷰에 출력
(5) Top - 이미지의 원본 크기를 유지한 채 이미지의 윗부분을 이미지 뷰에 출력
(6) Top Left - 이미지의 원본 크기를 유지한 채 이미지의 왼쪽 윗 부분을 이미지 뷰에 출력
var isZoom = false //이미지 확대 여부를 나타내는 bool 타입의 변수
var imgOn : UIImage? //켜진 전구 이미지를 가지고 잇는 UIImage 타입의 변수
var imgOff : UIImage? //꺼진 전구 이미지를 가지고 잇는 UIImage 타입의 변수
@IBOutlet var imgView: UIImageView! //이미지 뷰에 대한 아웃렛 변수
@IBOutlet var btnResize: UIButton! //버튼에 대한 아웃렛 변수
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
imgOn = UIImage(named: "lampOn.jpeg") //imgOn에 "lampOn.jpeg"이미지를 할당
imgOff = UIImage(named: "lampOff.jpeg") //imgOn에 "lampOff.jpeg"이미지를 할당
imgView.image = imgOn //위에서 할당한 imgOn 이미지를 imgView에 할당
}
//확대, 축소 버튼에 대한 액션 함수
@IBAction func btnResizeImage(_ sender: UIButton) {
let scale:CGFloat = 2.0 //확대할 배율 값
var newWidth:CGFloat, newHeight:CGFloat //확대할 크기의 계산의 계산 값을 보관할 변수
if(isZoom){ //true 현재 확대된 그림일 경우(즉, 타이틀은 축소)
newWidth = imgView.frame.width/scale //이미지 뷰의 프레임 너빗값을 scale로 나눔
newHeight = imgView.frame.height/scale //이미지 뷰의 프레임 높잇값을 scale로 나눔
btnResize.setTitle("확대", for: .normal) //버튼의 타이틀을 "확대"로 변경
}
else{ //false 현재 축소된 그림일 경우(즉, 타이틀은 확대)
newWidth = imgView.frame.width*scale //이미지 뷰의 프레임 너빗값을 scale로 곱함.
newHeight = imgView.frame.height*scale //이미지 뷰의 프레임 높잇값을 scale로 곱함.
btnResize.setTitle("축소", for: .normal) //버튼의 타이틀을 "축소"로 변경
}
//이미지 뷰의 프레임 크기를 수정된 너비와 높이로 변경
imgView.frame.size = CGSize(width: newWidth, height: newHeight)
isZoom = !isZoom //isZoom 변수의 상태를 !연산자를 사용하여 반전
}
//ON/OFF 스위치에 대한 액션 함수
@IBAction func switchImageOnOff(_ sender: UISwitch) {
if sender.isOn{ //만일 스위치가 On이면
imgView.image = imgOn //이미지 뷰의 이미지에 imgOn 이미지를 할당
}
else{ //만일 스위치가 OFF이면
imgView.image = imgOff //이미지 뷰의 이미지에 imgOff 이미지를 할당
}
}