반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리


반응형


공부하는 Introducing iOS8 의 Chapter 9 에 나오는 Selfie App 입니다.


우선 Main.storyboard를 이용해서 아래와 같은 화면을 만드세요.




가운데는 Image View 이고 왼쪽 오른쪽은 Bar Button Item 입니다.


import UIKit
import Social

class ViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {


  @IBOutlet weak var myImageView: UIImageView!
 

  @IBAction func selfieTapped(sender: AnyObject) {
    var imagePicker = UIImagePickerController()
    imagePicker.delegate = self
   
    if UIImagePickerController.isSourceTypeAvailable(.Camera){
      imagePicker.sourceType = .Camera
     
      if(UIImagePickerController.isCameraDeviceAvailable(.Front)) {
        imagePicker.cameraDevice = .Front
      } else {
        imagePicker.cameraDevice = .Rear
      }
    } else {
      imagePicker.sourceType = .PhotoLibrary
    }
   
    self.presentViewController(imagePicker, animated: true, completion: nil)
  }
 
  func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [NSObject : AnyObject]?) {
    myImageView.image = image
    self.dismissViewControllerAnimated(true, completion: nil)
  }
 
  @IBAction func shareTapped(sender: AnyObject) {
    var social = SLComposeViewController(forServiceType: SLServiceTypeFacebook)
    social.addImage(myImageView.image)
   
    self.presentViewController(social, animated: true, completion: nil)
  }
}


우선 Facebook에 접속할 거니까 Social 을 import 합니다.

그리고 클래스 선언하는데에 UIImagePickerControllerDelegate, UINavigationControllerDelegate 를 추가합니다.


그리고 Take Selfie 와 Share button 들에 대한 함수를 만듭니다. Connection을 Outlet 이 아닌 Action으로 선택하면 됩니다.

각각 selfieTapped 와 shareTapped 라는 함수를 만듭니다.


그리고 가운데 사진이 들어갈 Image View에 대한 객체도 만들구요. 

여기서는 함수 이름을 imagePicker로 했습니다.



일단 selfieTapped 함수를 보면 UIImagePickerController() 에 대한 객체를 만들어서 delegate를 현재의 view로 설정합니다. (self)


그리고 if 문을 사용해서 Camera가 가능한지 여부를 체크하구요.

가능하면 또 다시 전면이 가능한지 체크를 합니다. 전면 카메라가 가능하지 않으면 후면 카메라를 지정하고 가능하면 전면 카메라를 지정합니다.


그리고 만약에 카메라 자체가 가능하지 않으면 전면 후면 확인할 필요 없이 그냥 Photo Library 를 지정합니다.


마지막 줄은 image Picker를 화면 전체에 표시하는데 밑에서부터 위로 올라오도록 설정한 겁니다.


그러면 Take Selfie 버튼을 눌렀을 때 카메라를 찍을 수 있는 화면이 나오는 설정을 한 겁니다. (카메라 기능이 없으면 Photo Library 가 나오구요.)


다음은 didFinishPickingImage delegate method 를 추가 합니다.


이 메소드는 사전에 Swift에 정의된 메소드 입니다. 이 메소드는 사용자가 사진을 찍었거나 Photo Library에서 사진을 선택 했을 때 호출 됩니다.

두번째 image 파라미터에 사진이 전달되게 되는 겁니다.


함수 내용을 보면 첫번째 줄에서 파라미터로 전달받은 image를 myImageView 의 image로 받습니다.

이렇게 받은 다음에 imagePicker가 없어지도록 합니다.


이러면 사진을 찍고 그 사진을 imagePicker에 받는 것까지 마친겁니다.


이제 이 사진을 맘대로 다룰 수가 있는데요.

이 앱에서는 Facebook으로 보낼 겁니다.


이 기능은 사용자가 Share 버튼을 누를 경우 일어나게 됩니다.

그러니까 shareTapped 함수 안에 코딩을 해야 되겠죠.


일단 서비스 타입을 Facebook으로 한 SLComposeViewController를 만듭니다. 그 변수 이름은 social 이구요.

그리고 그 controller 에 아까 받았던 이미지를 추가합니다.


마지막 줄은 SLComposeViewController 가 표시되도록 한 겁니다.






여기까지 진행이 되면 위와 같은 화면이 나오는데요.

이건 제 컴의 에뮬레이터로 실행한 겁니다. Facebook 이 setting 돼 있지 않아서 직접 Post 는 안되는데 아마 Setting을 하면 Posting 까지 될 겁니다.


반응형