본문 바로가기

Swift29

맵뷰에 어노테이션 추가/삭제 맵뷰에서 어노테이션이란, 핀을 꽃아 장소를 설정하는 것을 말한다. MKPointAnnotation() 을 이용해서 장소를 설정하고 제거한다. 1234567891011121314 @IBAction func btn2(sender: AnyObject) { // 어노테이션 설정 let point = MKPointAnnotation() point.coordinate = CLLocationCoordinate2DMake(35.1598, 129.1626) point.title = "해운대" point.subtitle = "부산" mapView.addAnnotation(point) } @IBAction func removeAnnotation(sender: AnyObject) { // 어노테이션 전체 삭제 mapView... 2015. 10. 30.
mapView 맵뷰는 MKMapView.framework을 사용한다. 기본적인 프로퍼티// 확대, 축소, 스크롤 기능var zoomEnabled : Boolvar scrollEnabled : Boolvar rotateEnabled : Boolvar pitchEnabled : Bool // 지도 출력var showsUserLocation : Boolvar showsPointsOfInterest : Boolvar showsBuildings : Boolvar showsTraffic : Bool // iOS9 위치// 지도가 표시하는 영역의 중앙 위치를 설정하거나 얻기var centerCoordinate : CLLocationCoordinate2Dfunc setCenterCoordinate(coordinate: CLLocat.. 2015. 10. 30.
동영상 재생 MPMoviewPlayerController MediaPlayerFrameWork를 이용한 동영상 재생 방법 MPMoviewPlayerController 와 MPMoviePlayerViewController 두 종류가 있다. 후자는 신을 전환해서 사용하는 방법이다.전자를 살펴보자. 제공되는 기본적인 재생 관련 함수prepareToPlay()play()pause()stop()currentPlaybackTime: NSTimeInterval { get set } // 현재 재생 시간(초 단위) 비동기로 동작한다. 동영상 속성var moviewMediaTypes : MPMovieMediaTypeMask { get } // 미디어 타입(비디오, 오디오)var movieSourceType : MpMovieSourceType // 미디어 소스(파일, 스트리밍).. 2015. 10. 29.
오디오 녹음 및 재생 AVAudioRecorder & AVAudioPlayer 오디오 녹음기init(URL url: NSURL, settings: [String : AnyObject]) throws로 초기화한다.플레이어는 url만 설정하면 된다. 녹음 환경 설정은 딕셔너리 형태로 한다. 옵션은 아래와 같다.AVFormatIDKey : 녹음 포맷, 코어 오디오에 정의된 포맷 문자 사용AVSampleRateKey : 샘플링 레이트AVLinearPCMBitDepthKey : 녹음에 사용할 비트AVEncoderAudioQualityKey : 녹음 품질 녹음 기능에 관련된 메소드func prepareToRecord() -> Bool // 녹음 준비과정. 파일 생성함.func record() -> Bool // 파일에 녹음 수행하거나 중지func recordForDuration(duratio.. 2015. 10. 29.
Sync, Async, Task 방식으로 이미지 로딩하기 세 가지 방법 중 애플이 권장하는 방법은 Task방식이다. 어차피 기본적으로 싱크로 이미지를 로딩할 일은 없겠지만. task도 기본적으로 비동기이며, Async와 비교해서 장점은.. 음, 글쎄 더 빠른지는 자세히 테스트 해보지 않아서 모르겠다. 하지만 액션 구역이 분할되있기 때문에 아마 동작 제어가 더 낫지 않을까... 안드로이드의 AsyncTask와 가장 비슷한 형태라고 보인다. 코드는 아래와 같다.123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778import UIKit class ViewCo.. 2015. 10. 28.
데이터 저장(UserDefault) 앱을 종료해도 유지할 수 있는 방법들 1. 유저 디폴트(NSUserDefaults) // 싱글톤 객체let defaults = NSUserDefaults.standardUserDefaults() // 내용 저장defaults.setObject("저장할 내용", forKey: "키값") // 싱크 문제가 있기 때문에 싱크로나이즈 해줘야 함(성능 하락...)defaults.synchronize() // objectForKey()등등으로 얻어올 수 있다.let name = defaults.stringForKey("name") 이런 저런 퍼포먼스 저하 문제가 있기 때문에 앱의 설정 등을 저장하는데 주로 쓴다. 안드로이드의 sharedReference뭐시기랑 비슷한 것 사용 예제) 현재 날짜 저장하고 복원1234.. 2015. 10. 27.
세그웨이(코드로 Scene 전환) 스토리보드에서 뷰 컨트롤러를 2개 이상 만들고, 뷰 컨트롤러를 액션이나 아울렛 연결하듯이 다른 뷰 컨트롤러로 연결한다. 연결 방식은 Present Modally로 한다. 그러면 화살표가 연결되고 세그웨이를 호출할 준비가 된다. 코드에서 세그웨이를 컨트롤하는 메소드는 3개이다.123456 // identifier(세그웨이 아이디)에 맞는 세그웨이 실행 self.performSegueWithIdentifier(, sender: ) // 세그웨이가 실행되기 전 호출(데이터를 넘길 때 사용) self.prepareForSegue(, sender: ) // 세그웨이를 실행할지 결정 self.shouldPerformSegueWithIdentifier(, sender: ) -> Boolcs 3개의 메소드를 이용해 데.. 2015. 10. 26.
터치로 그림그리기 커스텀뷰를 활용한다. UIView를 상속한 커스텀뷰에 drawRect()를 오버라이딩 한다. 그 외에는 방법이 여러가지가 있겠지만 touchBegan(), touchMoved()를 오버라이딩해서 시작 포인트를 잡고 이동 포인트를 잡은 뒤 UIBezierPath()에 담고, drawRect()에서 그린다.코드는 아래와 같다. DrawingView.class123456789101112131415161718192021222324252627282930 class DrawingView: UIView { var path = UIBezierPath() override func drawRect(rect: CGRect) { print("drawRect") path.stroke() } override func touche.. 2015. 10. 23.
Multi touch gesture 멀티터치는 기본적으로 탭(싱글클릭을 이용한 두드리기), 끌기(pan), 밀기(swipe), 핀치(pinch), 회전(rotate), 롱 터치, 화면모서리 끌기(screen edge pan)가 제공된다. 사용방법은 멀티터치를 할 뷰에 라이브러리의 제스쳐 인식기(5가지)를 안으로 끌어다놓으면 설정된다. 가장 중요한 것은 xcode에서 기본적으로 멀티터치를 제공하지 않는다는 점이다. 인스펙터에 보면 Interaction 항목에 있는 두 가지를 모두 체크해야 활성화된다. 아래는 제스쳐 인식기를 이용한 기본적인 코드이다. 코드를 보고 활용하면 된다. 간단히 설명하자면, 제스쳐 인식기 객체를 만들고 뷰 컨트롤러를 담는다. 그리고 이미지뷰에 인식기를 등록하고 selector로 지정한 메소드에서 코드를 구현한다. 12.. 2015. 10. 23.