project/Kuring(공지알림) 28

[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에 대해서 알아보자 이 글을 벌써 두번째 쓰고 있다 ㅎㅎ 다 썼는데 뒤로가기 스와이프해서 글 다 날아가ㅁ ✅ 개요    ✅ Essentials 안에 더 내용이 있는데 쭉 읽어보면 쉽게 이해할 수 있다.장치 상태 확인하라던가, 햅틱 엔진은 싱글톤이 아니라던가 등등  ✅ 코드class HapticManager { static let shared = HapticManager() private var generator: UIImpactFeedbackGenerator? func setupGenerator() { generator = UIImpactFeedbackGenerator() generator?.prepare() } ..

[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. 프로젝트 타..

iOS StackView Button 추가하기

iOS StackView Button 추가하기 StackView의 경우에는 이전에는 storyboard로 사용했기에 크게 문제가 되지 않았는데, 코드로 할 때 조금 어려웠음.    var stackView = UIStackView().then { $0.translatesAutoresizingMaskIntoConstraints = false $0.backgroundColor = .white $0.distribution = .fillEqually } var noticeButton = UIButton().then { $0.setTitle("공지", for: .normal) $0.layer.cornerRadius = 20 ..