์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
- realm
- BOJ
- XCTest
- BFS
- ํจ์คํธ์บ ํผ์ค
- SwiftUI
- combine
- arkit
- Swfit
- reactorkit
- Flutter
- MVVM
- ํ๋ก๊ทธ๋๋จธ์ค
- CollectionView
- Lv2
- swift
- visionOS
- node.js
- Kuring
- SnapKit
- tableView
- ios
- TCA
- RxSwift
- ๋ฐฑ์ค
- designpattern
- UIKit
- Xcode
- raywenderlich
- rxcocoa
- Today
- Total
๋ชฉ๋กiOSํ๋ก์ ํธ/โ๏ธ Kuring (27)
lgvv98
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..
Haptic Feedback์ ๋ํด์ ์์๋ณด์๐ฃ ํํ ๋ ์ด ๊ธ์ ๋ฒ์จ ๋๋ฒ์งธ ์ฐ๊ณ ์๋ค ใ ใ ๋ค ์ผ๋๋ฐ ๋ค๋ก๊ฐ๊ธฐ ์ค์์ดํํด์ ๊ธ ๋ค ๋ ์๊ฐใ โ ๊ฐ์ (Overview - ๊ตฌ๊ธ๋ณ์ญ) Core Haptics๋ฅผ ์ฌ์ฉํ๋ฉด ๋ง์ถคํ ํ ํฑ ๋ฐ ์ค๋์ค ํผ๋๋ฐฑ์ ์ฑ์ ์ถ๊ฐํ ์ ์์ต๋๋ค. ํ ํฑ์ ์ฌ์ฉํ์ฌ ์ฃผ์๋ฅผ ๋๊ณ ํ๋์ ๊ฐํํ๋ ์ด๊ฐ ๋ฐ ์ค๋์ค ํผ๋๋ฐฑ์ผ๋ก ์ฌ์ฉ์๋ฅผ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐธ์ฌ์ํต๋๋ค. ์ ํ๊ธฐ, ์ค์์น ๋ฐ ์ฌ๋ผ์ด๋์ ๊ฐ์ ์ผ๋ถ ์์คํ ์ ๊ณต ์ธํฐํ์ด์ค ์์๋ ์ฌ์ฉ์๊ฐ ์ํธ ์์ฉํ ๋ ์๋์ผ๋ก ํ ํฑ ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค. Core Haptics๋ฅผ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ํจํด ์ด์์ผ๋ก ํ ํฑ์ ๊ตฌ์ฑํ๊ณ ๊ฒฐํฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ํ์ฅํ ์ ์์ต๋๋ค. ์ฑ์ ํ ํฑ ์ด๋ฒคํธ( )๋ผ๊ณ ํ๋ ๊ธฐ๋ณธ ๋น๋ฉ ๋ธ๋ก์ผ๋ก ๋ง๋ ์ฌ์ฉ์ ์ง์ ํ ํฑ ํจํด์ ์ฌ์..
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 ..
์คํ ๋ฆฌ๋ณด๋ ์์ด ์ฝ๋๋ก ๋์ฒดํ๋ ๋ฐฉ๋ฒ (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. ํ๋ก์ ํธ ํ..
โ ์ด๋ฒ ์๊ฐ์๋ RxGesture์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. RxGesture๋ผ๋๊ฒ ์์๋ค๋ ๊ฒ๋ ์ ๊ธฐ! ๋ด๊ฐ ํ๋ คํ๋ ์์ ์ UIView์ Rx๋ฅผ ํ์ฉํ์ฌ Gesture๋ฅผ ์ ์ฉํด๋ณด๋ ค๊ณ ํ์ด. ๊ทผ๋ฐ.. UIView()์ rx๋ก controlEvent๋ tap๋ฑ์ผ๋ก ์ ์ฌํ ํค์๋๋ฅผ ์ฝ๋๋ก ์ณ๋ด๋ ๋์ค์ง ์๋๋ผ๊ณ ๊ทธ๋์..! ๊ตฌ๊ธ์ ๊ฒ์ํ๋๋ฐ RxGesture๊ฐ ์์๋ค๋... โ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ์ var backView = UIView().then { $0.backgroundColor = .lightGray $0.alpha = 0.3 $0.isHidden = true } override func viewDidLoad() { super.viewDidLoad() let tapGesture = UITapGes..
โ ์ด๋ฒ ์๊ฐ์๋ Button์ 90๋ ํ์ ์ํค๋ ์ฝ๋์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ private let menuButton = UIButton().then { // 3์ ๋ชจ์(ํ๋ฒ๊ทธ ๋ฒํผ) $0.setImage(UIImage(systemName: "ellipsis"), for: .normal) $0.contentMode = .scaleAspectFit $0.tintColor = .black $0.transform = CGAffineTransform(rotationAngle: .pi * 0.5) } transform ์ชฝ์ ์ฝ๋ ๊ณฑํ๋ ์ซ์์ ๋ฐ๋ผ์ ํ์ ๊ฐ์ด ์ ํด์ง๋ค!