project 40

[SwiftUI] List accessory (feat. disclosure indicator)

List accessory (feat. disclosure indicator) ✅ 이번에도 제목이 다소 UIKit스럽다. 저번 포스팅에서도 언급했지만, UIKit을 먼저 공부하고 SwiftUI를 하다보니까, 검색도 UIKit스럽게 하기 때문에! StackOverflow에서는 ZStack을 이용해서 해결하던데, 맘에 들지 않았다. 그래서 처음 생각! init() { UITableViewCell ... } 이렇게 해서 해결해 보려고 했는데, 근데 적용할 만한 메소드가 보이지가 않았다. 결국 StackOverflow처럼 해결해야 했는데 한번 같이 알아보자! ✅ 올바른 case import SwiftUI struct didSelectRow: View { var body: some View { Navigation..

[SwiftUI] List Row 선택하기(TableView didSelectRow)

List Row 선택하기(TableView didSelectRow) ✅ 오랜만이다! 제목이 참 UIKit스러움 제목을 이렇게 작성하게 된 이유로는 내가 1년 정도 UIKit을 사용하면서 이미 사고가 여기에 익숙해진 상태인데, SwiftUI로 List의 Row(UIKit에서 cell)을 선택하는 로직을 작성하는게 잘 아직까지는 어려운 느낌.그래서 내가 구글에 저 키워드로 검색했는데, 딱히 맘에 드는게 안나타나서 직접 정리하려고 포스팅 함. 생각보다 간단한데, 이게 참 어려웠음.우선 UIKit을 사용하다보니 tableView에서는 UITableViewDelegate를 상속받아서 didSelectRow를 구현하면 되었다.그러니까 이와 비슷하게 List의 Row에 onTapGesture를 사용하면 될거라고 생각..

[iOS] Thread 1: "Attempt to insert non-property list object () for key ~

Thread 1: "Attempt to insert non-property list object () for key ~ ✅ 이슈 리포트 오랜만이다. UserDefault를 사용하여 값을 저장할 때 발생하였다. UserDefault의 경우에는 기본적인 타입만 저장 가능한데, 나의 경우에는 struct를 통해서 내가 정의한 타입을 저장하면서 이 문제가 발생했다. 이를 해결하는 방법으로는! UserDefault를 사용할때 encode 및 decode를 이용하여 수행하면 된다! 그렇게 하면 bit로 저장되어서 문제 없이 저장되고 나중에 이것을 꺼내와서 decode하면 원하는 값을 얻을 수 있따.

[iOS] tableViewCell Swipe Action 구현하기

tableViewCell Swipe Action 구현하기 ✅ 이번 시간에는 tableViewCell Swipe Action을 구현해보자 직접 애플 문서를 읽어보는 것을 추천하지만, 이 포스팅에서는 정말 간략하게 어떻게 사용하는 지만 알아보자. 이번 포스팅에서는 1. tableView에서 leading과 trailing swipe를 지원해주는 메소드를 사용하여 구현하는 것 2. editStyle을 메소드를 활용하여 구현하는 것 을 볼 예정이다. ✅ 1. tableView에서 leading과 trailing swipe를 지원해주는 메소드를 사용하여 구현하는 것 func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt i..

[iOS] Indicator customizing (feat. Lottie)

Indicator customizing ✅ 기본 Indicator를 변경해보자. 우선 UIRefreshControl에서도 사용되고, ActivityIndicator에서도 사용된다. 나는 더 예쁜 UI구성을 위해 Lottie를 활용했다. ✅ 위와 같이 코드를 작성하면 된다. let loadingView: AnimationView = .init(name: StringSet.Lottie.loading) let indicatorView: AnimationView = .init(name: StringSet.Lottie.loading) let refreshControl = UIRefreshControl() private func setupAnimationViews() { // main loading view.add..

[iOS] Haptic Feedback에 대해서 알아보자🐣

Haptic Feedback에 대해서 알아보자🐣 하하 난 이 글을 벌써 두번째 쓰고 있다 ㅎㅎ 다 썼는데 뒤로가기 스와이프해서 글 다 날아가ㅁ ✅ 개요 (Overview - 구글변역) Core Haptics를 사용하면 맞춤형 햅틱 및 오디오 피드백을 앱에 추가할 수 있습니다. 햅틱을 사용하여 주의를 끌고 행동을 강화하는 촉각 및 오디오 피드백으로 사용자를 물리적으로 참여시킵니다. 선택기, 스위치 및 슬라이더와 같은 일부 시스템 제공 인터페이스 요소는 사용자가 상호 작용할 때 자동으로 햅틱 피드백을 제공합니다. Core Haptics를 사용하면 기본 패턴 이상으로 햅틱을 구성하고 결합하여 이 기능을 확장할 수 있습니다. 앱은 햅틱 이벤트( )라고 하는 기본 빌딩 블록으로 만든 사용자 지정 햅틱 패턴을 재생..

[iOS] 프로그래머스 FLO 과제

[iOS] 프로그래머스 FLO 과제✅  과제 기간 - 2022-02-25 14:55~ 2022-03-03 14:54(7일) ✅ 개발 환경 - 언어 Swift 5 - iOS Deployment Target: 10.0 ✅ 써드파티 - RxSwift 6.5 - SnapKit - Then - Alamofire 5.5.0 - Kingfisher 5.0.0 - RxGesture 4.0.0 ✅ 내장 프레임워크 - AVFoundation ✅ 기능 요구 사항   이분탐색 알고리즘 사용해서 가사 찾는거 최적화하기.     ✅ 과제코드 위치https://github.com/lgvv/FLO ✅ Demo 영상" data-ke-type="html">HTML 삽입미리보기할 수 없는 소스

project 2022.03.06

[iOS] inAppReview(StoreKit)✨

inAppReview(StoreKit)✨ ✅ StoreKit을 활용해보기 애플 공식문서 https://developer.apple.com/documentation/storekit Apple Developer Documentation developer.apple.com ✅ StoreKit 인 앱 구매나 애플 뮤직 등 다른 것들도 지원하지만, 내가 사용할 것은 리뷰 작성하는 부분이다! 🟠 코드 import UIKit import StoreKit class AppStoreReviewManager { /// action count 값이 3일 때 `true` 입니다. static var isReviewable: Bool { UserDefaultManager.inAppReviewCount == 3 } static ..

[iOS] Xcode Storyboard(스토리보드) 없이 코드로 대체하는 방법

스토리보드 없이 코드로 대체하는 방법 (init) 2022.01.07: iOS 13.0 이상만 적용 가능한코드 (update) 2022.02.25: iOS 13.0 미만 버전에서도 사용 가능하게끔 추가 - 13.0을 기준으로 SceneDelegate가 생김. (update) 2022.11.03: Xcode 14 대응 ✅ 이번 시간에는 스토리보드 없이 코드로 대체하는 방법에 대해서 알아볼 예정이야. ⚙️ Xcode 13.0 기준 👉 Target iOS 13.0 이상 👉 Target iOS 13.0 미만 ✅ iOS 13.0이상 1. 처음 단계로는 프로젝트 파일에서 Main.storyboard 파일을 없애 줍니다. 2. Info.plist파일로가서 storyboard Name을 지워줍니다. 3. 프로젝트 타..