본문 바로가기

개발/iOS19

[iOS] UIDevice identifierForVendor / 기기 식별하기 아이폰 앱 서비스 하면서 사용자가 사용하는 아이폰의 기기를 식별해야할 일이 생길 수 있다. 아이폰마다 불변하는 특정 아이디, 식별자가 있어서 이 식별자를 수집하면 되지 않을까 하는 생각을 할 수 있다. 하지만 이런 사용자의 정보를 함부로 수집할 수 있도록 해준다면 우리의 애플이 아닐 것이다. 다만 애플은 우회적으로, 제한적으로 방법을 제공하고 있다. 바로 Vendor ID를 제공하는 것이다. https://developer.apple.com/documentation/uikit/uidevice/1620059-identifierforvendor identifierForVendor | Apple Developer Documentation An alphanumeric string that uniquely ide.. 2023. 3. 22.
iOS/macOS 번들(Bundle)에 대하여 - Part 1 iOS 개발을 하다보면 번들 ID부터 시작해서..자꾸 접하게 되는 것이 번들(Bundle)이다. 그냥 추상적으로 앱을 묶어놓은 패키지, 앱이 사용하는 공간 정도로 생각하고 있었으나 그 개념이 명확히 몰라 베일에 쌓여있었다. 도대체 번들(Bundle)이란 무엇인가? 왜 번들이 필요할까? macOS에서 응용프로그램에서 앱을 하나 선택해 패키지 보기를 선택하면 무언가 디렉터리로 들어가진다. 분명 .app 확장자를 가지는 파일인데 안에 내용은 마치 폴더와 같은 구조이다. 이 안에는 앱이 쓰는 아이콘, 이미지, 실행 바이너리 등이 들어있다. 어떤 .app확장자를 가지는 응용 프로그램을 열어봐도 동일한 구조의 디렉터리가 나온다. 분명 파일인데 왜 폴더 처럼 구성 되어 있을까? macOS에서 앱을 설치하는 방법 중 .. 2022. 10. 11.
iOS에서 카메라 필터를 만드는 법 조사 (LUT Lookup Image) 한 3년전 GPUImage 라이브러리를 활용하여 카메라 앱을 하나 개발 했었다. 그때 당시 라이트룸으로 한창 사진을 보정해보고 있을 때라 카메라로 찍어서 컴퓨터에서 작업하기 귀찮아 내가 만든 프리셋을 앱으로 만들어 버렸던 것이다.(사실 내가 필요해서 만듦.) https://apps.apple.com/kr/app/moment-july-camera-filters/id1448199130?l=en ‎Moment July - Camera Filters ‎Moment July is a photo filter application which has an atmosphere of July. Every filter in the application feels like bluish and cool and reminds o.. 2022. 10. 10.
Swift 프로그램 종료하기 exit(0) Swift문법을 공부할 겸 Swift로 코딩테스트 문제들을 풀어보고 있다. 그 중 난해한 점이 있는데 바로 프로그램 종료이다. Swift는 main.swift에서 글로벌로 실행되어 따로 main함수가 없다. C같으면 return 0 로 메인함수를 종료 시켜 프로그램을 종료시킬 수 있지만 도대체 swift는 어떻게 프로그램을 종료시킬까? 찾아보니 간단하게 exit(0) 함수를 호출하여 종료 할 수 있다고 한다. 단, 주의 할 점은 Foundation을 import해야한다. 다음은 프로그램 종료 예시 이다. import Foundation var kgSugar = Int(readLine()!)! var bags = 0 while kgSugar >= 0 { if kgSugar % 5 == 0 { bags +=.. 2022. 7. 9.
Swift 삽입정렬, 선택정렬, 퀵 정렬 Swift 언어에 좀 익숙해 보고자 알고리즘에서 제일 처음에 나오는 정렬 코드를 짜보았다. 간단하게 함수, 배열, 조건문, 반복문 등을 익일 수 있었다. 1. 삽입정렬 func insertionSort(arr: inout [Int]) { for i in 1 .. 0 && arr[j - 1] > key { arr.swapAt(j - 1 , j) j-=1 } arr[j] = key } return } 2. 선택정렬 func selectionSort(arr: inout [Int]) { for i in 0 ..< arr.count { var min = i for j in i ..< arr.count { if arr[min].. 2022. 7. 3.
iOS UIKit 튜토리얼 - Frame vs Bounds 이번 포스트에서 공부해볼 내용은 UIKit의 Frame과 Bounds이다. iOS에서 뷰를 출력하기 위해서는 Frame과 bounds를 지정해야 화면에 출력할 수 있다. let firstView:UIView = { let view = UIView() view.backgroundColor = .red view.clipsToBounds = true return view }() let secondView:UIView = { let view = UIView() view.backgroundColor = .blue return view }() override func viewDidLayoutSubviews() { firstView.frame = CGRect(x:20,y:100,width: 300,height: 30.. 2021. 4. 20.
iOS UIKit 튜토리얼 - UITableView - 3 // Section 이번에 포스트에서 진행할 튜토리얼은 UITableView의 Section기능이다. UITableView에는 여러종류의 데이터를 나워서 표현할 수 있는 Section이라는 기능을 제공한다. 흔히 연락처 앱에서 가,나,다 혹은 ABC 순으로 Section을 나워서 보여주는 것을 볼 수 있다. 1. Section 정의하기 section타이틀을 정의한다. 이번 포스트에서는 2개의 타이틀을 정의 하였다. let sections = ["mydata", "mydata2"] 2. 데이터 정의하기 섹션을 2개 정의 하였으므로 데이터도 두개의 데이터를 정의해준다. let myData = [ NameEmail(name: "James",email: "James@gmail.com"), NameEmail(name: "LaLa",.. 2021. 4. 17.
iOS UIKit 튜토리얼 - UITableView - 2 / TableViewCell 커스텀하기 이번 포스트에서는 지난 포스트(lucidmaj7.tistory.com/290)에서 만들었던 TableView의 Cell을 커스텀해보는 방법을 알아 보겠다. TableView Cell은 단순히 Label만 넣을 수 있는게 아니라 다양한 형태의 뷰를 표현하여 데이터를 표현할 수 있다. 예를 들면 카카오톡의 친구목록 UI를 보면 프로필사진, 이름, 알림메시지 등을 보여주고 있다. 이번에는 TableView Cell을 커스텀하여 이름, 이메일 목록이 출력되는 Cell을 만들어 보자 1. TableViewCell UI 레이아웃 수정하기 지난번 추가해놓은 TableViewCell에 두개의 Label을 추가해준다. 하나는 이름이 출력되고 다른 하나는 Email이 출력 될 것이다. Identifier는 MyCell이라.. 2021. 4. 9.
iOS UIKit 튜토리얼 - UITableView - 1 오늘 공부해 볼 iOS의 UIKit은 UITableView이다. UITableView는 보통 리스트를 나타내는 기능을 수행한다. 아래와 같은 화면은 많이 보았을 것 이다. 스크롤로 이루어진 뷰에 콘텐츠를 표시하며 보통 연락처, 설정 화면을 구성하는데 쓰인다. 0. 프로젝트 생성 우선 xcode에서 swift, storyboard기반 iOS application 프로젝트를 생성한다. 1. UITableView 추가 & TableView Cell 추가 다음과 같이 Table View를 찾아 ViewController에 추가해준다. 그다음 Table View Cell을 TableView에 추가해주자. 그리고 추가한 Cell에 Identifier를 설정해준다. "MyCell" 2. ViewController에 .. 2021. 4. 8.