반응형
목표 : 라이브러리에서 사진을 가져와 배경화면에 띄우기.
가장 먼저 해야 할 일은 1. 리소스 접근 권한 설정
Info.plist 파일에서 Information Property List 에 새로운 항목으로 [Privacy - Photo Library Usage Description] 키를 추가
: 앱이 사용자의 카메라나 앨범 리소스에 접근하기 위해 필요한 권한.
(카메라를 추가하고 싶다면 [Privacy - Camera Usage Description] 추가해면 된다.)
1. 사진첩을 띄울 UIButton() 만들기
2. 버튼 터치 시 실행될 uploadPhoto() 메서드 만들고 버튼 이벤트에 추가하기
3. extension으로 UIImagePickerControllerDelegate와 UINavigationControllerDelegate 속성 추가해주기
4. 받아온 사진을 화면에 띄우기
import Foundation
import UIKit
class ViewController: UIViewController {
let photoButton = UIButton(frame: .zero) //1 버튼 위치 및 크기는 addConstraints()에서 알아서 설정하기
var imageView = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
setupViews()
addConstraints()
}
func setupViews() {
photoButton.setTitle("사진", for: .normal)
photoButton.addTarget(self, action: #selector(uploadPhoto), for: .touchUpInside) //2
view.addSubview(imageView)
view.addSubview(photoButton)
view.subviews.forEach { view in
view.translatesAutoresizingMaskIntoConstraints = false
view.sizeToFit()
}
}
func addConstraints() {
let safeArea = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
// 버튼과 imageView의 위치 및 크기 설정
imageView.heightAnchor.constraint(equalTo: view.heightAnchor),
imageView.centerXAnchor.constraint(equalTo: view.centerXAnchor)
])
}
//2
@objc func uploadPhoto() {
let imagePicker = UIImagePickerController()
imagePicker.sourceType = .photoLibrary
imagePicker.delegate = self //3
// imagePicker.allowsEditing = true
present(imagePicker, animated: true)
}
}
//3
extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [UIImagePickerController.InfoKey : Any]) {
if let pickedImage = info[UIImagePickerController.InfoKey.originalImage] as? UIImage {
imageView.contentMode = .scaleAspectFit
imageView.image = pickedImage //4
}
dismiss(animated: true, completion: nil)
}
func imagePickerControllerDidCancel(_ picker: UIImagePickerController) {
dismiss(animated: true, completion: nil)
}
}
728x90
반응형
'Project > ToyProject_Couple App' 카테고리의 다른 글
[Swift iOS] Custom UITableView 만들기 (0) | 2021.03.12 |
---|---|
[Swift iOS] modal presentation style 모달로 화면 띄우기 (0) | 2021.03.11 |
[Swift iOS] Open Weather Map API 사용해 날씨 데이터 불러오기 (0) | 2021.02.09 |
[Swift iOS] calculate date 날짜 계산하기 (0) | 2021.01.27 |
[Swift iOS] 캘린더 라이브러리 _FSCalendar 설치 및 사용하기 (0) | 2021.01.23 |