iOS) containerBackgroundRemovable(_:) 알아보기(feat. iPad lock screen)
아래 글에서 iOS 17부터 containerBackground(for:) modifier 를 통해서 container background 을 설정해주어야 한다고 했어요.
아래 글에서 iOS 17부터 containerBackground(for:) modifier 를 통해서 container background 을 설정해주어야 한다고 했어요.
UIScreen.main 이 iOS 16 에서 Deprecated 되었습니다.
개발자 문서를 참고하여 단계별로 알아보고 진행하여 보겠습니다.
text field 를 통해 키보드를 사용하게 되면 어떻게 되는지 알아보겠습니다. 우선, 결과는 WWDC21 Customize and resize sheets in UIKit 에서 등장합니다.
@available
collection view 에서 선택된 셀에 대해서 알아보고자 할 때 indexPathsForSelectedItems 를 사용하였습니다.
@available
Xcode 15(15A240d) 업데이트 이후 YPImagePicker 오픈소스 라이브러리에서 저장 프로퍼티가 @available 를 가지며 생기는 에러가 있었습니다.
DT_TOOLCHAIN_DIR cannot be used to evaluate LIBRARY_SEARCH_PATHS, use TOOLCHAIN_DIR instead
✅ RxSwift 는 mvvm 과 함께 쓰기로 유명한데 그 이유를 알아보자
인스턴스가 계속 사용되야 하기 때문에 메모리에 남아있어야 한다. 라는 명분을 주는 것이 Strong Reference(강한 참조)입니다. 레퍼런스 카운트가 증가될 때는 강한 참조인 경우에 해당합니다. 이 강한 참조는 별도의 식별자를 명시하지 않으면 강한 참조로 여겨집니다.
Reference / Value / Protocol Type 의 Extension 할 경우 dispatch 방법이 달라지기도 합니다. 알아봅시다!
아래 개발자 문서를 참고해서 timeline 이 변경되었을 때 WidgetKit 에 알리는 방법에 대해 알아보겠습니다.
```swift // AppDelegate.swift
kotest가 있다면 TDD 묻고 BDD로 가!
아래의 뷰를 만들기 위한 과정 중에서 알게된 SnapKit 사용법을 적어보자.
RxCocoa traits
RxCocoa 에 있는 Traits 에 대해서 알아보자
✅ error handling - catch, catchAndReturn, retry, retryWhen, materialize, dematerialize
iOS) Lock Screen Widget 만들기
❓왜 앱 내에서 동적 링크를 생성할까요?
1. 프로젝트 세팅 ✅ 2. Widget 만들기 공유한 데이터를 보여줄 widget 을 구현. 다크모드를 적용. CoreData 데이터 공유. 3. Configurable Widget 만들기
1. 프로젝트 세팅 2. Widget 만들기 ✅ 3. Configurable Widget 만들기
How iOS Apps Adapt to the various iPhone 14 Screen Sizes
👉 위젯을 통해 앱의 특정 뷰로 이동
위젯의 배경에 투명도를 부여해서 단순 불투명한 배경을 만드는 것이 아니라 아래와 같은 블러처리 같은 느낌을 구현해보고자 했습니다.
✅ ARC(Automatic Reference Counting)란?
WWDC22) Build a workout app for Apple Watch 세션에서 알아보는 HealthKit 에 대해서 기록해보았습니다. HealthKit 의 heart rate 를 사용하기 위한 목표를 가지고 시청한 세션입니다.
Apple Developer Documentation
Build a productivity app for Apple Watch - WWDC22 - Videos - Apple Developer
detent 라는 용어를 개발자 문서에서 사용하는데 멈춤쇠라고 해석하기에 조금 부족함이 있었다. 그러던 중 WWDC22 세션 “Build a productivity app for Apple Watch” 에서 듣게 되어서 발췌했다.
Go further with Complications in WidgetKit - WWDC22 - Videos - Apple Developer
Go further with Complications in WidgetKit - WWDC22 - Videos - Apple Developer
👉 Overview
thread-safe : 멀티스레드 프로그래밍에서 자원에 스레드가 동시에 접근해도 문제가 생기지 않는 것을 말한다. 즉, 여러 곳에서 접근하더라도 올바른 결과를 얻게된다. atomic : 멀티스레드 프로그래밍에서 데이터의 변경 전과 후에만 자원에 접근할 수 있음을 보장하는 것이다....
1️⃣ 하나의 serial queue 가 테스크를 담당하도록 함 concurrent queue 를 사용하거나 여러 개의 serial queue 를 사용하면 여러 스레드가 동시에 접근하는 경우 발생. 이를 막기 위해 근본적으로 하나의 serial queue 가 테스크를 담당. ...
Discover PhotoKit change history - WWDC22 - Videos - Apple Developer
클래스의 인스턴스 메소드는타입의 구조 자신의 프로퍼티 값을 수정할 때 신경 쓸 필요가 없지만, 값 타입의 구조체나 열거형 등에서는 인스턴스 메소드가 내부 프로퍼티 값을 변경할 수 없습니다.
Xcode 14 업데이트 후 KakaoSDKAuth에서 저장 프로퍼티에 @available 이 붙는 곳에 다음과 같은 에러 메시지가 등장하였습니다.
열거형에 포함된 모든 케이스에 대해서 순회하고 싶을 때가 있습니다.
Go further with Complications in WidgetKit - WWDC22 - Videos - Apple Developer
함수는 1급시민이기 때문에 상수나 변수에 참조를 할당할 수 있습니다.
obsoleted
각 언어들이 지원하는 클래스를 통해서 OOP 를 구현할 수 있는 것이지 OOP 의 객체가 곧 클래스는 아니다.
https://school.programmers.co.kr/learn/courses/30/lessons/72414
플로이드 워셜(Floyd-Warshall)은 모든 지점에서 다른 모든 지점까지의 최단 경로를 모두 구해야 하는 경우 에 사용할 수 있는 알고리즘이다.
Complications and widgets: Reloaded - WWDC22 - Videos - Apple Developer
✅ iOS + 안드로이드 하이브리드 앱 개발자
** 본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다.*
OptimizationTips 문서에서 Value Type(값 타입)은 COW(Copy-on-Write) 최적화를 사용한다고 합니다.
OptimizationTips 문서에서 Value Type(값 타입)은 COW(Copy-on-Write) 최적화를 사용한다고 합니다.
좀 더 근본적인 질문을 던져보자.
Is it necessary to use [unowned self] in closures of UIView.animateWithDuration(…)?
2022 KAKAO TECH INTERNSHIP 의 두 번째 문제 “두 큐 합 같게 만들기”
예를 들어 많은 객체들이 해당 클래스를 상속받아서 같은 뷰를 가져야 한다면 서브클래싱을 하는 것이 유용하다. 이를 통해 재사용성이 좋아진다.
예를 들어 많은 객체들이 해당 클래스를 상속받아서 같은 뷰를 가져야 한다면 서브클래싱을 하는 것이 유용하다. 이를 통해 재사용성이 좋아진다.
# Message Dispatch
본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다.
카테고리를 생성했는데 다음과 같이 인터페이스 위아래로 매크로가 있었다. 무엇일까?
Method Dispatch
** 본 포스팅은 ‘프로그래밍 오브젝티브-C 2.0’ 을 읽으며 실습한 코드와 내용, 추가적으로 궁금한 내용을 정리한 글입니다.*
What’s new in App Store Connect - WWDC22 - Videos - Apple Developer
largestUndimmendDetentIdentifier 프로퍼티에 대해서 공부하면서 개발자 문서에 이야기하는 dimming view 의 개념에 대해서 이해해보았다.
What’s new in UIKit - WWDC22 - Videos - Apple Developer 본 글은 WWDC 를 보고, 번역 및 요약 그리고 실행해보는 스터디 프로젝트의 일환입니다.
What’s new in the Photos picker - WWDC22 - Videos - Apple Developer
WWDC22 - Hello Swift Charts
RxSwift/Why.md at main · ReactiveX/RxSwift
iOS 15 부터 적용이 가능한 prepareThumbnail(of:completionHandler:) 메서드를 사용해서 동기적 코드에서 background 스레드에서 비동기적으로 thumbnail image 를 만드는 것을 해보자! asnyc 로 선언된 비동기적 메서드...
**본 글은 WWDC 를 보고, 번역 및 요약 그리고 실행해보는 스터디 프로젝트의 일환입니다.*
ViewBuilder
https://github.com/uber/RIBs
WWDC21) **Build a research and care app, part 2: Schedule tasks**
WWDC21) **Build a research and care app, part 1: Setup onboarding**
내용 instagram story,feed 공유기능 구현을 목표
알림 권한 설정을 받는 방식이 iOS 12 에서 새롭게 추가되었습니다. 그 중 provisional 요청 옵션에 대해서 알아보고, 실제로 프로젝트에 도입하려했던 고민에 대해서 적어보려합니다.
var body: some View { Image("featuredImage1") .resizable() .scaledToFill() .cornerRadius(5) // overlay 를 통해서 border 를 추가할 수 있다. ...
익스텐션이란?
Notification Service Extension 을 활용해서 payload 의 값을 가공하는 과정이고 개발자문서는 아래를 참고 하면 됩니다.
```swift if MFMailComposeViewController.canSendMail() { let mailComposeVC = MFMailComposeViewController() mailComposeVC.mailComposeDelegate = self m...
[Swift.org](https://www.swift.org/documentation/api-design-guidelines//#fundamentals)
👷Diffable Data Source 란?
애플 소셜로그인의 경우에 버튼을 코드로 만들 수 있다. 이때 문구가 언어에 따라 설정된다. 앱 출시할 때 앱의 언어가 Korea 로 설정된다.
Xcode 에서 다음과 같은 워닝을 만났어요!
아래의 게시물은 제가 이전에 작성해둔 푸시알림 APNs 설정 및 파이어베이스에 앱 추가하는 과정입니다.
git forking workflow 적용
서버통신하는 동안 유저가 로딩되고 있음을 보여줄 수 있도록 activity indicator 를 제공하는 라이브러리를 사용해보자.
전문용어는 아니지만 나는 다음의 효과에 대해서 무한 스크롤이라고 명명하고 글을 작성하기로 했다.
iOS 15 에서 사용하는 UIButton.ConfigurationUpdateHandler 를 가지고 버튼의 상태에 따라서 대응해보도록 했다.
UITextField 에서 입력받을 글자 수를 제한해보자.
```swift extension UIPickerView { func setPickerLabelsWith(labels: [String]) { let columCount = labels.count let fontSize: CGFloat = UIFo...
Creating an iOS 10 Action Extension
HIG 문서 읽어보기 Action Extension 사용해보기 Share Extension 사용해보기
```swift let appearance = UITabBarAppearance() // set tabbar opacity appearance.configureWithOpaqueBackground()
👍 삼항연산자
기존에 지원하는 UIPickerViewController 가 있었는데요! iOS 14 에서 새로운 Photo Picker 가 나왔슴다!
Delegate 패턴을 사용하면서 Protocol 을 만들었다. 그런데 SwiftLint 에서 다음과 같이 경고가 발생했다!
다음은 제가 코드리뷰를 작성하던 도중 기록하고 싶은 내용이라서 그대로 가져왔습니다.
Xib 로 커스텀뷰를 만들어 봤는데 액션도 연결해봅시다! 다음의 글을 읽고 보시는걸 추천해요!
Dynamic Type 이란! 쉽게 말해서 우리가 기기에서 아래와 같이 텍스트 크기 를 설정할 수 있는데요. 이 때 사용자가 지정한 텍스트 크기에 따라 동적으로 크기가 변하는 것을 말해요!
iOS 15 에서 UIButton 에 새로생긴 UIButton.Configuration 에 대해서 알아보자!
두가지 방법을 통해서 커스텀 뷰 클래스를 Xib 와 연결해서 만들어보자!
동적으로 셀의 너비와 높이를 설정하는 방법에 대해서 알아보자구요!
navigation view controller 에서 pop 하는 방법은 총 세가지다.
오늘은 정렬 함수인 sorted(by:) 를 공부해보다가 생긴 궁금증을 소개해볼게여
💃 available 알아보기
내용
transition style 을 골라서 해보다가 .partialCurl 를 해보았다. 그런데 다음과 같이 오류가 발생했다.
🍕 HTTP 통신
지금까지 GET, POST 통신만 사용해보았다. DELETE 와 PATCH 도 구현해보자.
내용 버튼을 통해서 특정 문자열을 손쉽게 클립보드에 복사하기.
따란, URLSession 을 공부하면서 Alamofire 에서는 어떻게 구현했을까? 라는 궁금증에서 시작된 라이브러리 해체쇼
서버통신에서 가장 많이 사용하는 GET, POST 통신의 다양한 경우에 대한 코드를 작성해보겠다.
많이들 알고있는 네트워크 오픈 라이브러리인 Alamofire 는 URLSession 으로 만들었다. URLSession 에 대해서도 알아보고 URLSession 사용법도 알아보자.
애플의 Face ID 를 활용한 샘플 프로젝트와 개발자 문서를 정리해봤다.
😨 Face ID 를 활용한 오싹한 생체인식 인증 실험
📌 UIImage 를 Data 로 변환하는 것은 부적합하다?
😇 본격적으로 클론코딩을 해보자
아래와 같이 상단만 둥근 모서리를 가진 뷰를(파란뷰) 만들고 싶었다. (하얀배경의 뷰와 파란배경의 뷰 두개로 구성)
UILabel 부분 글자 크기/폰트/색상/밑줄 설정하기
클론코딩 스터디 - 미라클론
💨 Swift Package Manager 를 사용해보자
프로젝트 초기 설정 때 Info.plist 를 이동하고자했는데 이때 에러가 발생했다.
이전 글을 읽고 오면 이해가 더 잘 될 것이다.
🌂 Design Pattern
notification 이 프로젝트 내에서 퍼져있기 때문에 이름이 가끔 겹치기도 하고 내가 무슨 이름을 사용했는지 기억이 안나기도 했다.
간단한 예제로 살펴보는 iOS Design/Architecture Pattern: Coordinator - Advanced
참고 간단한 예제로 살펴보는 iOS Design/Architecture Pattern: Coordinator - Basic [Swift] Coordinator Pattern (1/2) - 기본원리
UIView transition animation options
App’s Life Cycle
👷♀️ login tutorial using Kakao iOS SDK
📌 Modal presentation style
우리가 접하는 QR코드 리더기는 특정 영역안에서 QR코드가 읽힌다. 그 이유로 나는 많은 QR코드가 카메라에 잡히지 않도록 사용자를 유도함과 동시에 사용자가 본인의 QR코드를 입력하는 인식을 주기 위함이라고 생각이 든다. 핸드폰을 제대로 가져다 대지도 않았는데 조금이라도 카메라에 ...
QR코드와 리더기를 만드는 오픈 라이브러리가 있지만 자체 라이브러리를 활용해서 만들어보기로 했다.
iOS) VerticalCardSwiper 오픈라이브러리를 알아보자
SwiftLint 오픈라이브러리를 프로젝트에 적용해보려고 합니다.
iOS 프로젝트 폴더링
App Store clone 프로젝트를 뜯어보다가 다음과 같은 뷰의 presenting animation 에 대해서 알고 싶어졌다. 이것말고도 다른 애니메이션 효과들도 한번 알아보자.
📇 VerticalcardswiperTutorial
우리는 셀을 재사용하면서 특정 문제점을 경험해봤을 것이다. 바로 셀이 재사용될 때 발생하는 문제점이다.
iOS 환경에서의 동시성 프로그래밍 지원 종류
먼저, UISearchController 에 대해서 읽어보자.
이미지 크기에 따라서 동적으로 셀의 레이아웃을 설정하는 핀터레스트 레이아웃 구현해 보았다.
Moya 의 기본을 다루는 글은 많은데 막상 다양한 경우의 get 과 post 요청에 대해서는 정보가 많지 않아서 이번 프로젝트에서 사용한 방법을 공유하고 한다. 그리고 내가 가진 궁금증에 대해서 알아가면서 진행될 포스팅이다.
Almofire
오픈소스 라이브러리 SkeletonView 을 활용한 튜토리얼
local push 를 통해서 custom notification interface 를 적용해보자.
다크모드를 설정해둔 경우 대응하지 못하는 경우가 많다. 다음은 다크모드를 대응하기보다 간단하게 제한시키는 방법이다.
협업 시 info.plist 에서 시작 스토리보드를 설정하다보니 info.plist 파일에서 충돌이 나는 것이 위험이 있다고 생각해서 코드로 시작 스토리보드를 변경하도록 해보았다.
스토리보드에서 설정가능하지만 programmatically 하게 구현도 가능하다.
UIStatusBarManager
커스텀 네비게이션바의 색과 상태바의 색 맞추기
Splash 화면 만들기
서버 통신 시 success 일 경우 data 가 넘어오지만 fail 일 경우 넘어오지 않기도 하기 때문에 data 부분을 옵셔널로 선언해주어야 한다.
오픈 라이브러리 PanModal 사용하기
Login tutorial using Apple REST API
UIDevice 를 extension 으로 아이폰의 기종유무를 저장하는 변수를 만든다.
서버와 HTTP 통신을 하기 위해서 다음과 같이 info.plist 파일을 세팅해주어야한다.
제플린에서 쉐도우 설정 및 동적으로 셀크기 설정
viewDidLoad() 에서 화면전환 하면 원하는 뷰 전환이 이루어지지 않았다.
UIImageView UITapGestureRecognizer 로 액션설정하기
Declaring Your Actionable Notification Types - notification 을 차별화하고 notification interface 에 action buttons 더하기
Pushing Background Updates to Your App - notifications 으로 background 의 앱을 깨우너가 업데이트.
masksToBounds 와 clipsToBounds 차이
서버 push 알림을 구현해보자
Core Data custom class 를 설정해보고 relationship 을 활용해서 관계형 데이터베이스화 해보자.
User Defaults vs Core Data
Date 로 날짜 다루기
Moya BandAPI
Kingfisher
Core Data CRUD
interactivePopGestureRecognizer
scrollViewDidScroll(_:)
selectedBackgroundView 와 selectionStyle 을 활용해서 cell 이 선택되었을때 불필요하게 변하는 회색 배경을 없앨 수 있다.
기본폰트 커스텀폰트로 설정
UIPageViewController
SubView 제거
UITableView 당겨서 새로고침
Core Data 에 대해서
delegate 에 여러개의 컬렉션뷰를 연결하기
UICollectionView cell 왼쪽정렬
UIButton 코드로 짜기
Cell 꾹 눌러서 미리보기 만들기 - context menu 만들기
convert UIColor to String
navigationBar 에서 large title 의 color 를 바꾸려 하였다.
push 와 pop 시 ViewLifeCycle
Realm 을 이용해서 데이터베이스 구축
UITextField 에 입력시 키보드 위 toolbar 구현
UITalbeViewCell SwipeAction
UITalbeView editingStyle allowsMultipleSelectionDuringEditing
UITalbeView Separator 없애기
UITextView placeholder 효과 구현하기
section 에 따라서 커스텀 셀 설정
UIButton 눌러도 반응하지 않도록 하기
UITextField 가 비어있다면 UIButton 비활성화 시키기
저장하지 않고 dismiss 할 때 ActionSheet 띄우기 UIAdaptivePresentationControllerDelegate
modal 창 뒤에 View 띄우기
UIAction closure based UIControl
modal 창으로 뷰컨트롤러를 present 한 경우 아래로 쓸어내리면 창이 닫힌다 하지만 .fullScreen 속성을 주게되면 dismiss 로 쓸어내려도 창이 닫히지 않는다.
다른 스토리보드로 화면전환
Code Convention
Commit,Issue,PR Commit Type
Issue 다루기
Branch
Branch rules
Automated kanban 을 사용하여 project 생성
완전 탐색 / 이진 탐색
Quick / Merge Sort
inout 매개변수
Bubble / Selection / Insertion Sort
배열(Array) 다루기
기본 셋팅과 시작
완전 탐색 / 이진 탐색
Quick / Merge Sort
Bubble / Selection / Insertion Sort
배열(Array) 다루기
기본 셋팅과 시작
🦕 make github blog github blog