[iOS] BSImagePicker

r1verfuture·2021년 10월 11일
0

iOS

목록 보기
4/30

BSImagePicker

  • 갤러리에서 사진 선택할 때 기본적으로 한번에 사진 하나만 선택 가능하도록 되어 있지만 한번에 사진 여러개 선택 가능하도록 하기 위해 사용한다.

Cocoa Pod Install

pod 'BSImagePicker', '~> 3.1'

Xcode Example

import BSImagePicker
import Photos

let imagePicker = ImagePickerController()
imagePicker.modalPresentationStyle = .fullScreen
imagePicker.settings.selection.max = 5
imagePicker.settings.theme.selectionStyle = .numbered
imagePicker.settings.fetch.assets.supportedMediaTypes = [.image]
imagePicker.settings.theme.selectionFillColor = .white
imagePicker.doneButton.tintColor = .white
imagePicker.doneButtonTitle = "선택완료"
imagePicker.cancelButton.tintColor = .white

presentImagePicker(imagePicker, select: {
	(asset) in
    	// 사진 하나 선택할 때마다 실행되는 내용 쓰기
}, deselect: {
	(asset) in
    	// 선택했던 사진들 중 하나를 선택 해제할 때마다 실행되는 내용 쓰기
}, cancel: {
	(assets) in
    	// Cancel 버튼 누르면 실행되는 내용
}, finish: {
	(assets) in
    	// Done 버튼 누르면 실행되는 내용
        
        self.selectedAssets.removeAll()
        
        for i in assets {
        	self.selectedAssets.append(i)
        }
        
        self.convertAssetToImage()
        self.collectionView.reloadData()
})

// PHAsset Type 이었던 사진을 UIImage Type 으로 변환하는 함수
func convertAssetToImage() {
	if selectedAssets.count != 0 {
    		for i in 0 ..< selectedAssets.count {
        		let imageManager = PHImageManager.default()
                	let option = PHImageRequestOptions()
                	option.isSynchronous = true
                	var thumbnail = UIImage()
                	imageManager.requestImage(for: selectedAssets[i], targetSize: CGSize(width: selectedAssets[i].pixelWidth, height: selectedAssets[i].pixelHeight), contentMode: .aspectFill, options: option) {
            	    		(result, info) in
                    		thumbnail = result!
        		}
            
            		let data = thumbnail.jpegData(compressionQuality: 0.7)
            		let newImage = UIImage(data: data!)
            		self.selectedImages.append(newImage! as UIImage)
       		 }
   	 }
}

Values

  • modalPresentationStyle : 화면에 보이는 형태
  • settings.selection.max : 한번에 선택 가능한 아이템 최대 개수
  • settings.theme.selectionStyle : 아이템 선택했을 때 보이는 형태 (.checked / .numbered)
  • settings.fetch.assets.supportedMediaTypes : 선택 가능한 아이템 파일 형식 (.image / .video)
  • settings.theme.selectionFillColor : 선택한 사진에 칠할 색
  • doneButton.tintColor : 선택 완료 버튼 글씨 색
  • doneButtonTitle : 선택 완료 버튼 내용, 기본값은 "Done"
  • cancelButton.tintColor : 취소 버튼 글씨 색
profile
#iOS #Swift #Developer #Python

0개의 댓글