⭐️ 개발
[iOS] Enum으로 코드 리팩토링
주의 : 코드만 있음!! import UIKit enum SettingOptions: Int, CaseIterable { case total, personal, other var section: String { switch self { case .total: return "전체 설정" case .personal: return "개인 설정" case .other: return "기타" } } var rowTitle: [String] { switch self { case .total: return ["공지사항", "실험실", "버전 정보"] case .personal: return ["개인/보안", "알림", "채팅", "멀티프로필"] case .other: return ["고객센터/도움말"] } } } c..
[iOS] for - in / forEach 동작구조?
for - in 배열의 개수만큼 반복하기 때문에 for - in 반복문을 사용해서 배열의 모든 요소에 루프 상수로 접근이 가능하다. nums의 요소 개수만큼 반복문이 반복한다. 현재 반복문의 index도 알고 싶으면 enumerated / indices를 이용하거나, for (index, num) in nums.enumerated() { print("(index: \(index) num: \(num))") } for index in nums.indices { print("(index: \(index) num: \(nums[index]))") } 또는 배열의 개수에서 index로 접근해서 아래처럼 해줄 수도 있다. for index in 0..
[iOS] Formatted API in iOS15
iOS15부터 나온 Formatted API 숫자, 날짜, 시간 등과 같은 데이터를 사용자가 원하는 현지화된 문자열로 변환해준다. 사용자의 디바이스의 위치와 언어설정에 따라 다르게 나올 수 있다. //: [Previous](@previous) import UIKit let value = Date() print(value) // 2022-07-13 07:10:50 +0000 print(value.formatted()) // PM/AM으로 정리되어서 나옴 print(value.formatted(date: .omitted, time: .shortened)) // 시간만 나옴 print(value.formatted(date: .complete, time: .shortened)) // 전체날짜가 영어로 나옴 pr..
[iOS] Copy items if needed, Move to Trash
Xcode 프로젝트에 특정 파일을 추가할 때 항상 뜨는 이 창. 이 창에서 꼭 Copy items if needed, Create groups를 필수로 체크해야 한다. target도 마찬가지 이게 복제로 만들어서 쓰겠다는 뜻이라서 references를 누르면 안된다. 파일을 삭제할 때도 마찬가지로 Move to Trash를 선택해야 한다. Finder에 있는 파일을 Xcode에 넣을 때 reference로 넣으면 finder의 경로로 찍히게 되어서 추후에 해당 파일을 휴지통에 버리면 Xcode에 있던 파일도 같이 삭제되기 때문임.
[iOS] Rendering Mode, Build Phases, NavigationController, TabBarController
6일차,, 스보에서 오토레이아웃 잡는 게 어렵다.. 새삼 몰랐던 방법도 알고, 내가 얼마나 코드 베이스에만 집중했는지 알게 되는.. 순간... Build Phases 2번째 Compile Source 부분이 우리가 실행될 파일의 위치를 알려준다. 4번째 Copy Bundle Resources에는 예를 들어, Font 파일이 추가될 경우에 여기에도 추가되어야 한다. Alpha / Opacity 0.0 (투명) ~~~~~ 1.0 (불투명) 1. alpha - UIView에 속함 그래서 해당 뷰 하위에 있는 객체들한테도 속성이 적용됨 2. opacity - CALayer에 속함 하위 뷰에는 적용이 되지 않음 Rendering Mode Original Image : 원본 이미지의 색상 등등이 그대로 들어옴 Te..
[iOS] 1주차에 새롭게 알게 된 것들
이번주에 새롭게 알게 된 내용들이 많아서 흥미로웠당..ㅎ 기존에 내가 왜 있는 건지 몰랐던 것들에 대해서 그리고 이게 있었어?라고 그냥 지나치던 것들까지도 세세하게 알 수 있어서 유익했다. 1. AppDelegate / SceneDelegate iOS 12에서 13으로 버전이 바뀌면서 iPadOS가 나왔다. 가장 큰 특징은 분할화면 -> 다중 창 모드가 가능하다는 것인데 그런 일로 인해 기존 Inactive / active 등의 앱의 생명주기 개념으로만은 명확하게 구분지을 수 없게 되었다. 예를 들어, 사파리 창을 아이패드에서는 최대 3개(의 Scene)까지 한 화면에 열 수 있기 때문에, 사파리 3창 중 1창을 닫았다고 해서 사파리 앱이 inactive/active 됐다고 말하기가 어렵다. 그래서 UI..
[iOS] UITextFieldDelegate, DidEndOnExit, isHidden
3일차 과제 정리 1. textField ReturnKey func configureTextField() { writeTextField.placeholder = "내용을 작성해주세요" writeTextField.text = "루히짱!" writeTextField.keyboardType = .default writeTextField.delegate = self } extension LEDViewController: UITextFieldDelegate { func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() } } 코드를 설명하면 UITextFieldDelegate를 채택해주고, 해당 델리게..
[iOS] SF Symbols, iOS 계층구조, 상속
SF Symbol SF Symbol은 사실 폰트임 San Fransico 폰트가 애플의 default 폰트인데, 이걸 기준으로 iOS 13 이상부터 심볼을 만들 때 디바이스에 보여지는 가독성을 고려해서 폰트가 가지고 있는 특성을 이미지에도 주자는 것이 이 심볼의 핵심임 switch에서 title은 Mac에서만 보임 플랫폼에 따라서 안보이는 기능들이 있음 iOS 계층 구조 CocoaTouch Framework > UIKit iOS 개발 환경에서 다양한 기능을 구현하기 위한 도구가 포함되어 있는 최상위 레벨의 프레임워크 그 중에서 UIKit이 우리가 자주 사용하는 도구인데 UI 관련 도구가 들어있고, Foundation은 String, Int, Data 등의 기본 데이터 형식 및 컬렉션 등이 포함되어 있다...
[WWDC22] What's new in UIKit in iOS16
https://developer.apple.com/videos/play/wwdc2022/10068/ What's new in UIKit - WWDC22 - Videos - Apple Developer Discover the latest updates and improvements to UIKit and learn how to build better iPadOS, iOS, and Mac Catalyst apps. We'll take you... developer.apple.com 생산성을 위한 UIKit 개선 1. 커스텀이 가능한 네비게이션바 2개의 네비게이션 방식을 추가해서 문서 기반의 앱을 제공함 - 브라우저 스타일 웹과 문서 브라우저처럼 이력이나 폴더 구조 탐색하기 적합 - 편집기 스타일 문서 편집을..
[iOS] 애플의 생태계 및 기초적인 개념
Application에 대해 앱이 출시되는 단계 기획/디자인 -> 개발 -> 테스트 -> 심사 -> 출시/업데이트 -> 유지보수 앱의 구조와 동작 원리 - UI/Scene : 사용자 눈에 보이는 화면 - 기능(Logic) : 사용자가 볼 수 없는 뒷단 기능 - Data 인터넷이 연결 안되어 있으면 콘텐츠를 볼 수 없는 상황이 있음 애플이 지향하는 시장, 애플 생태계 - 디자인 : 입체적(스큐어모피즘) -> 플랫한 느낌 -> 뉴스큐어모피즘 - 개발언어 : 오브젝트-C -> 스위프트 - 사용자 입장에 대해서의 이해 / 개인정보 보호 WWDC 최근 기준으로 보자면, 애플로 로그인하는 기능인데 우리의 이메일이 한 번 더 보안화 돼서 넘어갈 것 대신 소셜 로그인을 할 경우에는 애플 로그인이 필수화 예시) 최근 새..
[iOS] Mac Catalyst가 뭔데요?
Storyboard와 SwiftUI 차이 2019년에 새롭게 나왔고 현재 버전은 3 SwiftUI가 나오면서 스보 이외에 화면을 다루는 방식이 2가지가 된 것이다. 스보는 참고할 수 있는 레퍼가 엄청 많음, 근데 여러 플랫폼을 대응하기 취약함 -> 즉, 현재 다루고 있는 이미지, 레이블 등이 iPad, iPhone에만 잘 대응함 -> 애플워치, 맥OS에서는 다른 걸 사용해서 대응해줘야 함 UIKit - iPad, iPhone AppKit - macOS WatchKit 애플의 여러 플랫폼에 똑같이 출시하려면 공부할 게 굉장히 많았음 그래서 애플이 SwiftUI를 만들어서 내부에 UIKit, AppKit, WatchKit을 다 넣어서 여러 플랫폼에 대응할 수 있게 함 iOS 13 이상을 지원함 스유에서는 M..
[iOS] KakaoMap API 써보기
KakaoMap API 써보기 굉장히 오랜만에 왔다.. 티스토리.. 이제 꾸준히 써야지.. 자료 - 카카오 공식 문서 - Kakao 지도 API - 위도경도 찾기 - 위도경도 찾기 위도경도 찾기 위도경도 찾기, 미국기준 미세먼지 측정지도, IP 주소확인, 일출일몰 시간, 방문자 위치 분석, 설치 안내 map.esran.com 이거 말고 구글지도로 검색하면 바로 나옴 1. 초기 세팅 아래 블로그에 굉장히 잘 나와있다. Kakao Maps API with Swift Kakao Maps API with Swift iOS에서 카카오맵을 연동해보겠습니다. 다음 링크를 가서 SDK를 다운받고 설명을 읽어봅니다. https://apis.map.kakao.com/ios/guide/ 파일의 이름에 DaumMap이라고 나..
[Swift] ARC 공부하기
ARC 공부하기 강한 순환 참조? 순환 참조? 약한 참조? 다 드루와! https://huree-can-do-it.notion.site/ARC-304a3f3cf1cd4ec7bfb4450be7c1d83f
[iOS] Firebase로 이메일 로그인, 애플로그인 구현하는 방법
Firebase로 이메일 로그인, 애플로그인 구현하는 방법 Firestore Database 야매로 건들기 Firebase Sign In with Apple - 애플 개발자 페이지에 iOS 앱을 등록하는 방법까지~!
[iOS] iOS15 tableview section header 간격 문제 해결
iOS15 tableview section header 간격 문제 해결 iOS15 tableview section header gap https://developer.apple.com/documentation/uikit/uitableview/3750914-sectionheadertoppadding?language=objc Apple Developer Documentation developer.apple.com iOS15로 업데이트 후 tableView가 이상하게 변했다. cell이 없을 경우 section header height 값을 0으로 return 했는데도 옆에 사진처럼 section header 간격이 잡혀버리는 것;; 구글링 해보니 iOS15부터 새로 적용되는 기능... sectionHeade..