터미널에서 복사하는 방법
cp -r Project1 Project3
하위 디렉토리 및 파일까지 모두 복사
폴더 드래그 후 Option
키
UIActivityViewController
: 앱에서 표준서비스를 제공하는데 사용하는 뷰컨트롤러
네비게이션바에 버튼추가하기
예제코드
navigationItem.rightBarButtonItem = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(shareTapped))
네비게이션바의 오른쪽에 나타나는 버튼을 설정합니다.
UIBarButtonItem
데이터타입의 새로운 인스턴스를 만듭니다.
툴바나 탭바에서 배치하기 위한 특수한 버튼
barButtonSystemItem
: 시스템항목 (여러가지옵션을 제공) , 커스텀이 가능하지만 권장하지않음 ❌
target
: action
메시지를 받는 객체
action
: target
이 선택될 때 보낼 작업
#selector
: 컴파일러에게 shareTapped
라는 메서드가 존재하며 버튼을 누를 때 트리거되어야 한다고 알려주는 것
공유버튼 클릭했을 때 UIActivityViewController 보여주기
@objc func shareTapped() {
guard let image = imageView.image?.jpegData(compressionQuality: 0.8) else {
print("No image found")
return
}
let vc = UIActivityViewController(activityItems: [image], applicationActivities: [])
vc.popoverPresentationController?.barButtonItem = navigationItem.rightBarButtonItem
present(vc, animated: true)
}
@objc
: Objective-C에 접근해야하는 메서드를 작성할 때 사용하는 키워드#selector
사용될 때 항상 사용해야합니다.)jpegData(compressionQuality: 0.8)
: 이미지를 JPEG데이터로 변환해주고 품질을 1.0(최대품질) ~ 0.0 (최소 품질) 사이의 값으로 지정할 수 있습니다.vc.popoverPresentationController?.barButtonItem
: iPad에서는 액티비티뷰컨트롤러는 팝오버형식으로 표시해야 됩니다. (iPhone에 영향을 끼치지 않습니다.)Privacy-Photo Library Additions Usage Description
액티비티뷰컨트롤러내에서 이미지 저장할 때 충돌 문제
Info.plist
에서 add Row
에서 옵션 추가해줍니다.도전 과제
activityItems
는 [Any]
타입이므로 이미지이름을 추가합니다.UIAlertViewController
로 스코어 보여주기@objc
는 필요할 때 사용하지 않는다면 빌드가 되지 않습니다.present()
메서드를 통해 뷰컨트롤러들을 표시할 수 있습니다.navigationItem
은 각 뷰컨트롤러마다 자체적으로 가지고 있습니다. (모든 뷰컨트롤러가 공유하지 않습니다.)@IBAction
은 Objective-C코드로 작성한 스토리보드가 연결되어 있으므로 @objc
가 포함되어있습니다.