본문 바로가기

ios 뽀개기180

ios 코어 로케이션 프레임워크로 위치 정보 수집하기 ios 코어 로케이션 프레임워크로 위치 정보 수집하기 1. 코어로케이션 매니져코어 로케이션 프레임워크의 주요 클래스는 CLLocatoinManager 와 CLLocatoin 이다 CLLocatoinManager 클래스의 인스턴스는 아래처럼 생성가능하다. var locatoinManager : CLLocatoinManager = CLLocatoinManager() CLLocatoinManager 인스턴스로 두 메서드 중 하나를 호출 할 수 있다 포그라운드에 있을 때만 위치정보를 추척한다면locatoinManager.requestWhenInUseAuthorizatoin() 백그라운드에 있을 때도 위치추적을 하는 경우라면locatoinManager.requestAlwaysAuthorizatoin() 2.위치정.. 2018. 5. 17.
ios 코어 로케이션 프레임워크 예제 ios 코어 로케이션 프레임워크 예제 스토리보트 화면viewcontroller.swift import UIKitimport CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { @IBOutlet weak var latitude: UILabel! @IBOutlet weak var longitude: UILabel! @IBOutlet weak var horizontalAccuracy: UILabel! @IBOutlet weak var altitude: UILabel! @IBOutlet weak var verticalAccuracy: UILabel! @IBOutlet weak var distance: UILabel! /.. 2018. 5. 16.
mkMap을 이용해서 길찾기 기능 구현 mkMap을 이용해서 길찾기 기능 구현 스토리 보드로 뷰를 이런식으로 간단하게 만들고 import UIKit import Contacts import MapKit class ViewController: UIViewController { //1.스토리 보드에서 만든 객체들을 컨트롤러와 연결시켜주었다. @IBOutlet weak var address: UITextField! @IBOutlet weak var city: UITextField! @IBOutlet weak var state: UITextField! @IBOutlet weak var zip: UITextField! //2. 사용자가 주소를 입력하고 getDirections 버튼을 누르면 해당메서드는 필드들에 있는 주소 정보를 추출한다. /*이렇게 .. 2018. 5. 16.
ios 지도 mkmap 3 - 해당 주소 지도에 표시하기&현재위치 ios 지도 mkmap 3 이번에는 mkplacemark 와 mkmapitem을 이용해서 텍스트 주소에 해당하는 표시를 지도위에 해보겠다 1. mkplacemark 인스턴스 생성하기 mkmapitem 클래스를 이용해서 지도를 표시할 때 나타나는 각각의 위치는 mkplacemark 객체에 의해 표현되어야 한다. mkplacemark 객체를 생성할 때 그 객체는 주소 속성 정보를 포함하고 있는 nsdictionary 객체와 함께 위치의 지리적 좌표로 초기화 되어야 한다. //매게 변수로 위도,경도가 들어간다. let coords = CLLocationCoordinate2DMake(51.5083, -0.1384) let address = [CNPostalAddressStreetKey: "181 Piccadil.. 2018. 5. 16.
ios 지도 mkmap 2 ios 지도 mkmap 2 위도와 경로 좌표를 이용해서 해당 주소 데이터를 찾는 방법을 알아본다. 먼저 앞의 포스팅에는 주소를 이용해서 미국 캘리포니아에 있는 애플의 위도와 경도를 구했다. 그 데이터를 이용해서 이번엔 주소를 찾아본다. 코드는 아래와 같다. 간단하다. //역방향 지오코딩 let geoCoder = CLGeocoder() //cllocatoin객체는 위도와 경로 좌표로 초기화 let newLocation = CLLocation(latitude: 37.3316833, longitude: -122.0301031) //geoCoder에 reverseGeocodeLocation 메서드로 전달 된다. geoCoder.reverseGeocodeLocation(newLocation, completion.. 2018. 5. 16.
ios 지도 mkmap 1 ios 지도 mkmap 1 텍스트 기반의 주소를 그 주소에 해당하는 좌표를 가지는 CLLocation 객체로 변환하는 CLGeocoder 클래스를 이용해서 미국 캘리포니아의 애플사의 좌표를 가져오는 예제를 살펴본다. let addressString = "One Infinite Loop, Cupertino, CA 95014" CLGeocoder().geocodeAddressString(addressString) { (placemarks, error) in if error != nil{ print("에러발생 \(error!.localizedDescription)") }else if placemarks!.count > 0{ let placemark = placemarks![0] let location = pl.. 2018. 5. 16.
ios 실전 앱 만들기 : 어떤 앱이 만들어 질까 ios 실전 앱 만들기 : 어떤 앱이 만들어 질까 logincontroller.swift // Copyright © 2018년 MacBookPro. All rights reserved.// t\색상68cd4c import UIKitimport Firebaseclass LoginController: UIViewController,UIPickerViewDelegate,UIPickerViewDataSource { //사진 선택했는지 체크 var picCheck = false //피커뷰 데이터 let gender = ["남자","여자"] var age:[String] = [] var messagesController: MessageController? //피커뷰 객체 let genderPickerView :UI.. 2018. 5. 15.
Ios AutoLayout 7 - AutoLayout Landscape 이슈 Ios AutoLayout 7 - AutoLayout Landscape 이슈● 들어가기 전이번 포스팅에서는 Landscape을 했을때 발생하는 AutoLayout 이슈에 대해서 살펴보자. 글로 쓰는 것보다 사진을 바로 보자.대충 이런 현상이다. 세로였을때 바로 나오다가 Landscape했을 때 위와 같이 두 페이지가 반반 씩 동시에 나오는 이슈가 발생한다. viewWillTransition 함수를 override 해서 해결해보자.● 실습순서1.viewWillTransition 함수 override2.소스코드 리팩토링● viewWillTransition 함수아래의 viewWillTransitoin 함수는 view가 바뀔때 작동되는 함수다. 아래의 코드를 SwipingController 제일 윗 부분에 작성.. 2018. 5. 8.
Ios AutoLayout 6 - UIButton 이벤트와 UIPageControl속성 Ios AutoLayout 6 - UIButton 이벤트와 UIPageControl속성 ● 들어가기 전이번 포스팅에서는 이전 포스팅에서 만들었던 UIButton에 이벤트를 걸어서 "이전버튼"을 누르면 이전페이지로 이동시키고, "다음버튼"을 누르면 다음 버튼으로 이동시키는 코드를 작성해보자. 그리고 페이지가 이동할때 UIPageControl의 현재페이지를 보여주는 색깔점 표시도 변경시켜보자.● 실습순서1. ViewController.swift에 있는 UIButton객체와 UIPageControl객체와 autolayout을 설정한 함수 가져오기2. 버튼에 이벤트 걸어주기3.pageControl 설정4.scrollViewWillEndDragging 함수 구현● ViewController에 있는 객체들과 aut.. 2018. 5. 7.
Ios AutoLayout 5 - MVC 패턴 Ios AutoLayout 4 - MVC 패턴 ● 들어가기 전이번 포스팅에서는 mvc 패턴에 대해서 살펴보겠다. mvc 패턴은 아주아주 간단하게 말해서 어플리케이션을 만들때, m 모델단, v 화면단, c 컨트롤단으로 구분지어서 소스코드를 제작하는 방법이다. 반드시는 아니지만 굳이 구분을 하자면 프론트 엔드 즉, 디자이너는 v 부분 소스코드를 짜고, 개발자는 c 부분 소스코드를 짜고, db모델러는 m 부분을 담당한다.(쉽게 설명해서) 이러는 이유는 앞에서도 설명했는데, 페이지 하나에 화면소스, 컨트롤소스, 모델 소스를 짜버리면 나중에 유지보수하기가 힘들고 개발할때도 복잡해서 효율성이 떨어지기 때문이다. 아주 간단하게 설명하면 이렇다. 그렇다면 ios에서 mvc가 어떻게 활용되는지 보자. ● 실습순서1.모델.. 2018. 5. 6.
[ios 팁] could not launch 자신의 아이폰에서 앱 구동할때 오류 [ios 팁] could not launch 자신의 아이폰에서 앱 구동할때 오류 ios개발할 때 가끔씩 simulator에서 말고 직접 자신의 폰에서 앱을 구동해 보고 싶을 때가 있다. 이 포스팅에서는 자신의 아이폰에서 앱을 구동하는 사전 설정 부분은 다루지 않는다. 사전 설정이 끝났는데도 불구하고 아이폰을 mac에 연결후 xcode에서 run 버튼을 누르면 가끔씩 발생하는 could not launch.... 이 문구가 뜰때 어떻게 처리를 해야할지 해결방법을 포스팅 한다. ▲ 무슨 뜻인지 몰라도 이런 메시지가 뜬다면..대충 너의 앱을 실행 할 수 없다 그러니깐 아래 경로로 들어가서 설정을 해줘라 라는 뜻~ ▲ 아이폰에서도 비슷한 오류가 뜬다. 신뢰할 수 없는 개발자라고 하는데 그럼 신뢰를 해주도록하자... 2018. 5. 5.
Ios AutoLayout 4 -UICollectionViewController 활용 Ios AutoLayout 4 -UICollectionViewController 활용 ● 들어가기 전이번포스팅에서는 UICollectionViewController를 이용해서 페이지를 좌우로 넘겨주는 기능을 살펴보자.● 실습순서1.rootview를 UICollectionViewController를 상속받는 클래스로 지정해주기2. UICollectionViewController를 상속받는 클래스 지정3. UICollectionViewController의 Cell을 꾸며줄 Customcell 만들기4.ViewController에 있던 소스 UICollectionViewController를 상속받는 클래스로 옮기기 ● rootview 지정해주기AppDelegate파일로 들어와서 window 객체를 초기화 하는.. 2018. 5. 5.
[ios 팁] swift 두 가지 함수로 현재 날짜 구하기 DateFormatter와 Calendar swift 두 가지 함수로 현재 날짜 구하기 DateFormatter와 Calendar 개발을 하다보면 시간을 표시해야 할 일이 종종 생긴다. 날짜와 시간을 구하는 방법은 다양하다. 정말 무척이나 다양하다! 이번 포스팅에서는 DateFormatter 와 Calendar를 이용해서 날짜와 시간을 구하는 예제를 살펴보자. 1. DateFormatter 예제 func getCurrentDateTime(){ let formatter = DateFormatter() //객체 생성 formatter.dateStyle = .long formatter.timeStyle = .medium formatter.dateFormat = "MMMM,dd yyyy" //데이터 포멧 설정 let str = formatter.stri.. 2018. 5. 4.
Ios AutoLayout 3 - UIStackViews와 pageController Ios AutoLayout 3 - UIStackViews와 pageController● 들어가기 전이번 포스팅에서는 맨아래 부분에 네비게이션 바를 구현해보자. 왼쪽 버튼 하나, 오른쪽 버튼 하나 그리고 가운데에는 pageController객체를 이용해서 페이지의 위치를 표현해줄것이다. 즉, 총 3개의 객체필요한데 이 객체를 UIStackViews를 이용해서 위치를 시켜 줄것이다. ● 실습순서1.버튼 객체 만들기2.페이지 컨트롤 객체 만들기3.버튼, 페이지 컨트롤 객체 오토레이아웃 지정해주기4. stackview를 이용해서 레아이웃설정해주기● 버튼객체와 페이지 컨트롤 객체 만들기viewdidLoad() 함수위에 버튼객체와 pageController 객체를 만들어준다. 123456789101112131415.. 2018. 5. 4.
[ios 팁] UIImagePickerController오류- 등잔 밑을 살피자 UIImagePickerController오류- 등잔 밑을 살피자 아이폰 어플 개발을 하던 중, 늘 사용하던 UIImagePickerController에 문제가 발생했다. 사진선택 버튼을 누르면 사진 라이브러리가 뜬다. 그리고 사진을 선택하면 선택한 사진이 imageView에 떠야하는데, imageView에 뜨질 않는 것이다. 구글링해보고, info.plist 뒤져서 사진 라이브러리 사용하겠다고 승인 처리도 해줬는데..계속 아래와 같은 오류가 떴다.자세히보면 아래와 같다.errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled" UserInfo={NSLocalizedDescription=q.. 2018. 5. 3.
Ios AutoLayout 2 - ContainerView와 NSMutableAttributedString Ios AutoLayout 2 - ContainerView와 NSMutableAttributedString ● 들어가기 전지난번 포스팅에서는 오토레이아웃으로 만들 간단한 프로젝트에 대한 소개를 했다. 이번 포스팅에서는 간단한 이슈가 나오는데 ContainerView와 NSMutableAttributedString을 이용해서 해결하는 과정을 포스팅 해보겠다. 부모 View를 만들어서 그안에 image view를 넣어 오토레이아웃을 지정해 줄것이다. 그리고 그림 아래 text는 NSMutableAttributedString 속성을 통해 작성할것이다. 이슈는 아래와 같다. 아이폰을 옆으로 기울이면 그림만 보이고 글은 아래로 숨어 버린다. 이 이슈를 부모 containerview를 이용해서 해결해보자.● 실습순.. 2018. 5. 3.
Ios AutoLayout 1 - 소개 Ios AutoLayout 1 - 소개 ● 들어가기 전이번 포스팅에서는 ios의 autolayout에 대해서 한번 알아보겠다. storyboard를 사용하는 대신에 autolayout관련 함수만으로 간단한 ios 어플리케이션을 만들어보면서 autolayout에 대해 이해해보자. 참고로 이 포스팅은 유튜브 "Lets Build That App" 채널을 참고해서 정리한 포스팅이다.● 소개UICollectionViewController을 이용해서 이미지와 글이 담긴 페이지가 좌우로 넘어가는 간단한 어플을 만들어보려고 한다. ● 실습순서1.ios클로저로 imageView 객체 만들기 , textView 객체 만들기2.속성 정의3.view에서 1번에서 만든 객체를 삽입해준다.4.위에서 만든 객체 autolayou.. 2018. 5. 2.
instagram like 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let uid = FIRAuth.auth()!.currentUser!.uid let ref = FIRDatabase.database().reference() let key = ref.child("users").childByAutoId().key var isFollower = false ref.child("users").child(uid).child("following").queryOrde.. 2018. 3. 6.
간단한 tableview - 스토리보드 없이 코드로만 만들어보기 tableview 커스터마이징 간단한 tableview - 스토리보드 없이 코드로만 만들어보기 소스코드 첨부 AppDelegate.swift//// AppDelegate.swift// TableViewCode//// Created by MacBookPro on 2018. 2. 8..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKit @UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: .. 2018. 2. 9.
간단한 collectionview - 스토리보드 없이 코드로만 만들어보기 (커스텀셀) 간단한 collectionview - 스토리보드 없이 코드로만 만들어보기 소스파일 첨부 AppDelegate.swift//// AppDelegate.swift// CollectionViewCode//// Created by MacBookPro on 2018. 2. 8..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKit @UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launc.. 2018. 2. 8.
간단한 collectionview - storyboard로 만들기 간단한 collectionview 소스파일 첨부 오른쪽 하단에 오브젝트 파레트에서 collecionview를 왼쪽 마우스로 끌어다가 스토리보드에넣고 cell에 imageview를 넣어준다. cell identifiter는 RowCell로 해준다. 그리고 흰 바탕화면을 오른쪽 드래그 해서 위쪽 노란색 동그라미에 가져다 두면 datasource와 delegate 메뉴가 뜨는데 클릭해준다.*나중에 소스코드에서 따로 셀을 구성하는 custom class를 만들어서 연결 시켜 줄것임 소스 import UIKit //필요한 프로토콜 상속 받기class ViewController: UIViewController,UICollectionViewDelegate,UICollectionViewDataSource,UIColle.. 2018. 2. 8.
ios 10이상에서 navigation titleview를 커스터마이징 할때 발생하는 오류 ios 10이상에서 navigation titleview를 커스터마이징 할때 발생하는 오류 이슈: navigation titleview를 커스터마이징 하면서 titleview에 터치이벤트를 걸어놨다. 잘작동한다. 문제는 titleview안에 addsubview로 다른 uiview를 넣었을때 네비게이션 바에서 보이지도 않았다. 잘작동됨! 문제는 titleview 안에 다른 uiview들을 넣어줬을때 부모 uiview격인 titlview (파란색 배경)가 사라지고 당연히 터치이벤트도 동작하지 않는다. 과정: 버그 인지 모르고 관련 코드를 처음부터 끝까지 수십번 리딩했다.......ㅜㅜ 리딩하고 찍어보고 리딩하고 찍어보고.. 코드에 문제가 없다고 생각해서 구글 검색.. 이것도 1시간 넘게 검색했다... 찾아보.. 2018. 1. 29.
유튜브 플레이어1 유튜브 플레이어1 podfile target 'YoutubeVideo' do use_frameworks! pod 'YouTubePlayer-Swift','~> 1.0' end viewcontroller//// ViewController.swift// YoutubeVideo//// Created by MacBookPro on 2018. 1. 22..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKit//유튜브 플레이어 모듈 임포트 - podfile에 작성import YouTubePlayer_Swift class ViewController: UIViewController { //유튜브나올 view 아웃렛 변수 지정 @IBOutlet var.. 2018. 1. 22.
alert 커스텀 슬라이더 alert 커스텀 슬라이더 //// ViewController.swift// AlertCustom1//// Created by MacBookPro on 2018. 1. 3..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //버튼 객체 만들기 let btn = UIButton(type:.system) btn.frame = CGRect(x:50, y:50 , width: 200, height: 100) btn.center = CGPoint(x:self.view.frame... 2018. 1. 3.
alert 커스텀 - 이미지 alert 커스텀 - 이미지 //// ViewController.swift// AlertCustom1//// Created by MacBookPro on 2018. 1. 3..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKitimport MapKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //버튼 객체 만들기 let btn = UIButton(type:.system) btn.frame = CGRect(x:50, y:50 , width: 200, height: 100) btn.center = CGPoint(x:sel.. 2018. 1. 3.
alert 커스텀 - 지도 2 alert 커스텀 - 지도 2 //// ViewController.swift// AlertCustom1//// Created by MacBookPro on 2018. 1. 3..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKitimport MapKitclass ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //버튼 객체 만들기 let btn = UIButton(type:.system) btn.frame = CGRect(x:50, y:50 , width: 200, height: 100) btn.center = CGPoint(x:se.. 2018. 1. 3.
alert 커스텀 - 지도1 // // ViewController.swift // AlertCustom1 // // Created by MacBookPro on 2018. 1. 3.. // Copyright © 2018년 MacBookPro. All rights reserved. // import UIKit import MapKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //버튼 객체 만들기 let btn = UIButton(type:.system) btn.frame = CGRect(x:50, y:50 , width: 200, height: 100) btn.center = CGPoint(x:self.view.f.. 2018. 1. 3.
alert 커스텀 - 기본 alert 커스텀 //// ViewController.swift// AlertCustom1//// Created by MacBookPro on 2018. 1. 3..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() //버튼 객체 만들기 let btn = UIButton(type:.system) btn.frame = CGRect(x:50, y:50 , width: 200, height: 100) btn.center = CGPoint(x:self.view.frame.width.. 2018. 1. 3.
메모장 - 커스텀(x) 메모장 - 커스텀(x) // // AppDelegate.swift // Real // // Created by MacBookPro on 2017. 12. 29.. // Copyright © 2017년 MacBookPro. All rights reserved. // import UIKit import CoreData @UIApplicationMain class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? //접근성과 일관성 데이터 보존의 이유로 이곳에 작성 var memolist = [MemoData]() //메모 데이터를 저장할 배열 변수 - 여러개의 메모를 목록형식으로 저장할 것임 func application(_ ap.. 2018. 1. 3.
커스텀 내비게이션 바 커스텀 내비게이션 바 //// AppDelegate.swift// NavCustom//// Created by MacBookPro on 2018. 1. 2..// Copyright © 2018년 MacBookPro. All rights reserved.// import UIKitimport CoreData @UIApplicationMainclass AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?).. 2018. 1. 3.