/iOS 📱
-
[iOS] 화면 스크린샷 방지 기능 개발에 대한 회고/iOS 📱 2022. 7. 6. 11:51
개요 iOS 단말에서 특정 화면을 스크린샷을 하지 못하게 해달라는 요구사항이 있었는데요 ! 구글링과 Github를 돌아다니며 가볍게 훑어보니 관련한 레포지토리들이 검색 결과가 있던 편이었습니다. 단순하게 오 ~ 구현이 쉬운가보다하고 넘어갔었는데 그것은 저에게 큰 시련으로 다가오게됩니다....! (회고를 작성하게된 계기...!) 요구사항 정리 요구사항은 보안상의 이유로 특정화면의 캡쳐를 방지하는 것이었습니다. 특정 화면을 막았더라도 사진으로 저장하는 방법을 넷플릭스 우회법으로 검색을 해보니 아래와 같이 정리할 수 있었습니다. 스크린샷 기능 사용 화면 기록를 통해 기록한 영상을 스크린샷 App Switcher 를 통해 보이는 화면을 스크린샷 주어진 시간은 2일, 요구사항, 그리고 우회 방법까지 막는 것은 크..
-
[iOS] 디바이스의 정보를 알아보자 UIDevice - UUID (1)/iOS 📱 2022. 5. 14. 22:12
공부한 내용을 기록한 게시물이기 때문에 틀릴 가능성이 있습니다. uuid, 보통 기기 고유의 유니크한 Key라고 불려온다. 그런데 uuid가 바뀌는 현상이 있어, 자동 로그인에 문제가 생겨 관심이 가게 되었다. UDID (Unique Device identifier) UUID에 대해서 알아보던 와중에 이전에는 UDID (Unique Device Identifier) 사용을 했다고 나와있었다. 단말기를 식별하기 위해 고유하게 할당된 40개의 숫자와 문자열인데, 기기 식별 값은 개인정보의 문제가 일어나 iOS 5에서 deprecated 되었다 그래서 현재 사용하지않으므로 이정도로만 역사(?)에 대해서만 알아보았다. UUID (Universally unique identifier) UUID란 한글로 말하면 범..
-
[iOS] 동적 테이블 뷰 셀(UITableView Dynamic cell height) 만들기 (estimatedRowHeight, autoDimension)/iOS 📱 2022. 5. 1. 00:31
UITableView 의 Content Type은 두 가지가 있다. 정적인 방법 (Static Cells) 동적인 방법 (Dynamic Prototypes) 동적인 방법의 Prototype Cell에 대해서 알아볼려고한다. 테이블 뷰의 행 높이를 결정하는 크게 두 가지 방식이 있다. 모두 동일한 높이를 갖는 방식 각 셀마다 다른 높이를 갖는 방식 각 셀마다 다른 높이를 갖는 방식에 내부 콘텐츠에 따라 동적으로 셀의 높이가 가변하는 방식이 또 있다. 모두 동일한 높이를 갖는 방식 테이블 뷰에서 행의 높이를 결정하는 것은 UITableView 객체의 rowHeight 속성이다.높이 설정하는 방법 : 인터페이스 빌더 테이블 뷰 전체에 일괄로 높이를 설정하는 방법 해당 프로토타입 셀 하나에만 높이를 설정하는 방..
-
[iOS] Core Loaction 위치 권한 설정하기/iOS 📱 2022. 4. 26. 23:57
안녕하세요 ! 오늘은 위치 정보가 필요할 때 위치 권한을 얻는 방법을 공부해보겠습니다 iOS 13 기준으로 설명드릴게요 ++ 추가 2024.01.19 (금) iOS 13에서 deprecated 된 방식 이외에 iOS 14에서 사용하는 프로퍼티와 메소드 추가 권한상태를 쉽게 출력할 수 있는 extension 추가 공식 문서로 자세하게 찾아보겠습니다. 1. 위치 정보를 받기 전에 requestAlwaysAuthorization() 혹은 requestWhenInUseAuthorization() 메소드를 꼭 호출해야한다고합니다. 2. Info.plist 파일에 key를 추가해줘야한다네요. 3. 권한 요청에 대한 사용자의 인터렉션은 CLLocationManager 의 delegate를 위임 받아, location..
-
[iOS] ViewController의 생명주기 (Life-Cycle)/iOS 📱 2022. 4. 25. 02:17
iOS 앱에서 보이는 화면은 ViewController로 이루어져있다고해도 과언이 아니네요. 그런 중요한 녀셕인만큼 잘 알고 쓰고싶은 마음입니다 시작해봅니다 ~ 우리는 프로젝트를 생성하게 되면 가장 먼저 만나는 화면이자, 코드입니다 궁금하니까 Jump to Definition을 통해 봤습니다. loadView 이후에 불려진다 ? 일단 전체적인 Life-Cycle를 알아보자 ! 위 문서에 나온 순서에 맞춰 각 메소드를 알아보겠습니다 viewDidLoad() 이 메소드는 view controller가 메모리에 불려졌을 때 호출이 되며 view가 nib 파일에서 호출되었는지, 프로그래밍적으로 loadView() 메소드에서 만들어졌는지 여부에 관계없이 호출되어진다고합니다. viewWillAppear(_:) vi..
-
[iOS]UIButton underline 설정하기/iOS 📱 2022. 4. 22. 17:51
종종 버튼 텍스트에 밑줄을 설정해야할 때가 있죠 빠르게 알아봅시다 ~ UIButton에 underline 설정은 두 가지 방법을 사용할 수 있습니다. 인터페이스 빌더에서 설정 코드로 설정 1. 인터페이스 빌더에서 설정 1. 인터페이스 빌더 > 어트리뷰트 인스펙터 창에서 Title의 속성을 Attributed로 설정해줍니다 2. underlineStyle을 적용할 Title의 텍스트를 선택한 후 우클릭 > Font > Underline을 설정해줍니다 여기서 궁금증 ! 내용보기의 보기 두 글자만 선택해서 적용이 가능할까 ? 아주 잘 된다 ! 자신이 적용할 범위만큼 선택하고 우클릭 > Font > underline을 설정해주면 된다 ! 2. 코드로 설정 let title = "예시 버튼" let attribu..
-
[SwiftUI] iPad로도 앱을 만들 수 있을까 ?/iOS 📱 2022. 2. 22. 00:56
간혹 iOS 오픈카톡방, 커뮤니티에 이런 질문이 올라온다 " iOS 앱을 만들고 싶은데 꼭 Mac을 가지고 있어야하나요 ? " " 아이패드로는 못할까요 ? " 결론부터 말하면 iPad로도 충분히 가능하다. 애플의 Playgrounds 릴리즈 노트이다. 무려 15개월 전 이야기이다. macOS와 iPadOS가 같은 playground 파일을 사용할 수 있게되었다. 애플은 이때부터 다 계획하고있었나보담.. 자, 그럼 다음 릴리즈노트를 살펴보자 3.2에서 4.0이 되었다 SwiftUI로 만들어진 iPhone and iPad 앱을 iPad 에서 빌드할 수 있게되었다. 그런데 기존 개발자들은 왜 부정적인 입장일까요 ? 여기서부터는 개인적인 의견이기때문에 모든 iOS 개발자들의 의견을 대신하진않는다. 저런 질문을 ..
-
[정보] plist, Cache.db 보는 법/iOS 📱 2022. 1. 18. 23:02
앱 내에 어떤 정보가 들어있는지 확인하기 위해서는 App Log, plist, Cache.db 보면 된다. Cache.db 와 App Log를 보는 법 1. Window > Devices and Simulators (⇧⌘2) 2. Devices and Simulators (⇧⌘2) 를 통해 나온 화면에서 정보를 보고 싶은 앱을 누른 상태로 하단에 ⚙︎ 버튼을 눌러서 Download Container를 누르면 저장이 가능합니다 3. 다운로드 된 Container를 우클릭 > 패키지 내용 보기를 눌러줍니다. 4. plist의 경로 , Xcode에서 본다면 좀 더 편하게 볼 수 있습니다 ~~ 5. Cache.db의 경로 Cache.db의 경우는 sql로 봐야하며, 굳이 설치를 안해도 기본 터미널에서 사용이 가..