일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- SWIFTUI
- 아이폰
- viewcontroller
- IOS
- human interface guidelines
- SWIFT
- @available
- NotificationCenter
- roundingMode
- contentInset
- Navigation
- Modality
- 독서후기
- Failed to register bundle identifier
- NumberFormatter
- mvvm
- 야곰아카데미
- View Life Cycle
- xcode
- 독후감
- Mock
- delegation
- 스위프트
- 스타트업주니어로살아남기
- UIResponder
- Structures and Classes
- 책후기
- 부트캠프
- Info.plist
- Codegen
- Today
- Total
목록분류 전체보기 (144)
호댕의 iOS 개발

다이나믹 아일랜드가 있는 iPhone 14 Pro와 iPhone 14 Pro Max의 경우 아래 이미지처럼 다이나믹 아일랜드 상단에 공간이 생기게 되었다. 일단 기존에는 노치 부분까지 화면에 꽉 채우기 위해 StatusBar의 높이만큼 collectionView의 contentInset.top을 음수로 줘서 위로 올라가도록 구현했었다. let statusBarHeight = window?.windowScene?.statusBarManager?.statusBarFrame.height ?? 0 collectionView.contentInset.top = -statusBarHeight 여기서 statusBarManager의 경우 iOS 13부터 사용이 가능한 프로퍼티이다. 하지만 다이나믹 아일랜드가 생기면서 ..

설정 화면을 리뉴얼하면서 각 Section 별로 Content, 즉 셀을 넣을 때 Inset을 줘야 했다. 다만 각 셀 별로 ContentInset이 들어가는 것이 아니라 처음과 마지막 셀의 top과 bottom에 inset을 줘야 했다. 셀 별로 Content Inset이 필요했다면 아주 간단하게 해결이 가능하다. 각각의 Cell에서 아래처럼 해주면 된다. override func layoutSubviews() { super.layoutSubviews() contentView.frame = contentView.frame.inset( by: UIEdgeInsets(top: 10, left: .zero, bottom: 10, right: .zero) ) } 기존 셀의 ContentView.frame에서 ..

올해도 여느 해와 마찬가지로 WWDC가 시작됐다. 올해 WWDC에선 어떤 내용들이 있었는지 간단하게 정리해보고자 한다. 신제품 출시 15인치 맥북 에어가 새롭게 나왔다. 하지만 난 이미 맥북 M1 pro를 잘 쓰고 있기도 하고 크게 새롭다고 느껴지는 부분은 없었다. 맥북 에어에서도 큰 화면을 사용할 수 있다 정도...? iOS 17 등장 전반적으로 머신 러닝과 관련된 기능들이 많았고 아예 새롭게 등장하는 기본 앱과 기능들이 있었다. 연락처 포스터 일단 전화 앱에서 변경된 점은 연락처 포스터가 새롭게 등장했다는 것이다. 이는 사진 혹은 미모지로 꾸밀 수 있으며 잠금화면을 커스텀할 때와 유사하다. 이는 CallKit과 연동해서 사용이 가능하다. 또한 AirDrop을 통해 서로의 연락처를 쉽고 빠르게 공유할 ..

앱을 사용하다보면 사용자에게 리뷰를 할지 물어보는 모달을 본 적이 있을 것이다. 사용자에게 좋은 리뷰와 평점을 받는 것은 새로운 사용자를 유치하는데 큰 도움이 될 것이다. 요런 것들을 어떻게 사용자에게 띄워줄 수 있을까?? 일단 In-App Review의 경우 StoreKit의 SKStoreReviewController를 사용해주면 된다. if #available(iOS 14.0, *) { SKStoreReviewController.requestReview(in: windowScene) } else { SKStoreReviewController.requestReview() } iOS 14 이전에는 requestReview() 메서드를 사용해주면 되고 14 이후에는 파라미터로 WindowScene을 받아줘..

우리는 git ignore를 통해 Remote Repository에 올리고 싶지 않은 파일을 지정해줄 수 있다. 특정 확장자를 가진 파일 전체를 전부 지정할 수도 있다. 만약 xcconfig 파일을 올리고 싶지 않다고 한다면 *.xcconfig vi .gitignore를 통해 적어놓으면 된다. 그런데 이미 Github에 올려놓은 파일을 git ignore에 추가하려하면 잘 되지 않는다. git status를 통해 확인해도 우리의 Git은 계속 해당 파일을 추적한다고 한다. 하지만 방법은 존재한다. git rm --cached 이 명령어를 잘 활용하면 된다. 일단 Remote Repository에 파일은 지우되 로컬에 있는 파일은 지우고 싶지 않은 상황이기 때문에 git rm --cached {지우고 싶은..

Tuist는 Xcode 프로젝트를 생성 및 관리해주는 도구로 최근 모듈화와 함께 많이 들어본 툴이었다. 이번 넥스터즈 프로젝트를 진행하면서 Tuist를 통해 프로젝트를 관리하도록 정해서 Tuist의 셋팅 과정을 기록해보려고 한다. 공식문서에도 처음 시작 관련해선 설명이 잘 나와있다. https://docs.tuist.io/tutorial/get-started Get started | Tuist Documentation Learn how to install Tuist in your environment and generate your first project. docs.tuist.io curl -Ls https://install.tuist.io | bash 이 명령어를 터미널에 입력해주면 이렇게 설치가 된..

저번에 들은 강의에 이어 다음 강의를 듣고 내용을 정리해보고자 한다. [SwiftUI] 1. SwiftUI 시작하기 (Stanford CS193P) - some View 이번 넥스터즈 22기에선 SwiftUI를 사용해서 프로젝트를 진행하기로 결정했다. 이전부터 SwiftUI 공부해봐야지... 마음만 먹었었는데 실제 프로젝트를 하게 되니 확실히 공부를 시작했다. 이전에 초 ho8487.tistory.com 저번에는 단순히 카드 뷰를 옆으로 나열하는 뷰를 그렸다면 이번에는 좀 더 복잡한 뷰를 그렸다. 1. 특정 조건의 Preview 추가하기 일단 처음에는 가볍게 저번에 거의 사용하지 않는다고 했던 PreviewProvider를 만져보자. struct ContentView_Previews: PreviewPro..

이번 넥스터즈 22기에선 SwiftUI를 사용해서 프로젝트를 진행하기로 결정했다. 이전부터 SwiftUI 공부해봐야지... 마음만 먹었었는데 실제 프로젝트를 하게 되니 확실히 공부를 시작했다. 이전에 초반만 들었던 스탠포드 강의를 들어보면서 SwiftUI를 한 번 훑어보려고 한다. https://www.youtube.com/watch?v=bqu6BquVi2M&list=PLpGHT1n4-mAsxuRxVPv7kj4-dQYoC3VVu&index=1 처음에는 이 강의에 대한 개요에 대해 설명해주시고 Xcode의 기본적인 사용법에 대해 설명을 해주시는데 이 부분은 일단 넘기고... 본격적인 SwiftUI 설명부터 듣기 시작했다. import SwiftUI @main struct StanfordSwiftUIApp:..