์๋ฒํต์ ํ๋ ๋์ ์ ์ ๊ฐ ๋ก๋ฉ๋๊ณ ์์์ ๋ณด์ฌ์ค ์ ์๋๋ก activity indicator ๋ฅผ ์ ๊ณตํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํด๋ณด์. NVActivityIndicatorView ๋ก๋ฉ ์ ๋๋ฉ์ด์ ์ ์ ๊ณตํ๋ ์คํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ GitHub - ninjaprox/NVActivityIndicatorView: A collection of awesome loading animations ์๋์ ๊ฐ์ ๋ก๋ฉ ์ ๋๋ฉ์ด์ ์ ์ ๊ณตํ๋ค. pod install pod 'NVActivityIndicatorView' initializer ์์ํ๊ธฐ ๋ถํฌ๋ช ํ ๋ฐฐ๊ฒฝ์ ๊ฐ์ง๋ activity indicator ๋ง๋ค๊ธฐ import NVActivityIndicatorView // lazy: ์ฌ์ฉ๋๊ธฐ ์ ๊น์ง ์ฐ์ฐ๋์ง ์๋๋ค. ๋ก๋ฉ์ด ๋ถ..
์ ๋ฌธ์ฉ์ด๋ ์๋์ง๋ง ๋๋ ๋ค์์ ํจ๊ณผ์ ๋ํด์ ๋ฌดํ ์คํฌ๋กค์ด๋ผ๊ณ ๋ช ๋ช ํ๊ณ ๊ธ์ ์์ฑํ๊ธฐ๋ก ํ๋ค. ์ฐ๋ฆฌ๊ฐ ์ปจํ ์ธ ๋ฅผ ์คํฌ๋กคํ๋ค๋ณด๋ฉด ๋ง์ง๋ง ์ปจํ ์ธ ์ ๋ฟ์ผ๋ฉด ์คํฌ๋กค์ด ๋์ด๋๋ ๊ฒฝํ์ ํ์ ์ด ์์์ ๊ฒ์ด๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฑธ ์ธํ์ด๋์ดํธ ์ด๋ฉ์ด์ง ์คํฌ๋กค ์ฆ, ๋ฌดํ ์คํฌ๋กค์ด๋ผ๊ณ ๋งํด๋ณด์ ๐ ๋ณดํต ๋ฌดํ ์คํฌ๋กค์ด๋ผ๋ฉด ์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ(์ด๋ฏธ์ง์ ํ ์คํธ)๋ฅผ ์๋ฒ๊ฐ ๋ณด๋ด๊ณ ํ๋ก ํธ๊ฐ ๋ฐ๊ธฐ์ ๋ถ๋ด์ค๋ฝ๊ธฐ ๋ ์ฌ์ฉํ๋ค. ๊ทธ๋์ ํด๋ผ์ด์ธํธ๊ฐ ์คํฌ๋กค์ด ๋ง์ง๋ง์ ๋ฟ์ผ๋ฉด ๋ค์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์๊ฒ ์๊ตฌํ๊ฒ๋๋ค. ์๋ฒ๊ฐ ์๊ตฌํ๋ ๋ณดํต page, index, offset ์ด๋ฌํ ๋ถ๋ฅ ๋ฒํธ๋ฅผ ๊ฐ์ง๊ณ ๋ค์ ์คํฌ๋กค์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฒ ๋๋ค. UICollectionViewDelegate ๊ฐ UIScrollViewDelegate ๋ฅผ ์ฑํํ๊ธฐ ๋๋ฌธ์ scroll..
iOS 15 ์์ ์ฌ์ฉํ๋ UIButton.ConfigurationUpdateHandler ๋ฅผ ๊ฐ์ง๊ณ ๋ฒํผ์ ์ํ์ ๋ฐ๋ผ์ ๋์ํด๋ณด๋๋ก ํ๋ค. enum ButtonState { case enable case disable } var completeButtonIsEnabled: ButtonState = .disable { didSet { if completeButtonIsEnabled == .disable { completeButton.isEnabled = false if #available(iOS 15.0, *) { completeButton.setNeedsUpdateConfiguration() } } else { completeButton.isEnabled = true if #available(iOS ..
UITextField ์์ ์ ๋ ฅ๋ฐ์ ๊ธ์ ์๋ฅผ ์ ํํด๋ณด์. ๋จผ์ UITextField ์ ํ ์คํธ๊ฐ ๋ณ๊ฒฝ๋ ๋ ์ต์ ๋ฒ์๊ฒ ์๋ฆด ์ ์๋๋ก notification center ๋ฅผ ๋ฑ๋กํ๋ค. NotificationCenter.default.addObserver(self, selector: #selector(textFieldDidChange(_:)), name: UITextField.textDidChangeNotification, object: nil) UITextField.textDidChangeNotification UITextField ์ ํ ์คํธ๊ฐ ๋ณ๊ฒฝ๋ ๋ observers ์๊ฒ ์๋ฆฌ๋ notification textFieldDidChange(_:) cardTitleTextField ์ ํ ์คํธ๊ฐ ๋ณ๊ฒฝ๋ ..
Creating an iOS 10 Action Extension ์์ ํํ ๋ฆฌ์ผ์ ํฐํ๋ก ์ก๊ณ ๋ฐ๋ผ๊ฐ์ง๋ง ์ฝ๋๋ ์์ ํ์์ต๋๋ค 1๏ธโฃ Action Extension ์ถ๊ฐ [File] > [New] > [Target] ์์ Action Extension ์ ์ ํํด์ค๋ค. 2๏ธโฃ Action Extension ์ฌ์ฉ Action extension ํ ํ๋ฆฟ์ principal view controller class (ActionViewController๋ผ๊ณ ํจ) ๊ณผ Info.plist ํ์ผ ๋ฐ ์ธํฐํ์ด์ค ํ์ผ(์ฆ, ์คํ ๋ฆฌ๋ณด๋ ๋๋ xib ํ์ผ)์ ๋ํ ๊ธฐ๋ณธ ์์ค ํ์ผ์ ์ ๊ณตํฉ๋๋ค. ๐ป iOS. Action Extension ์ ์ ์ฒด ํ๋ฉด์ผ๋ก ํ์ํ๋ ค๋ฉด ํ์ฅ์ NSExtension ์ฌ์ ์ ๋ค์ ํค-๊ฐ ์์ ์ถ๊ฐํ์ธ์...
let appearance = UITabBarAppearance() // set tabbar opacity appearance.configureWithOpaqueBackground() // remove tabbar border line appearance.shadowColor = UIColor.clear // set tabbar background color appearance.backgroundColor = .white tabBar.standardAppearance = appearance if #available(iOS 15.0, *) { // set tabbar opacity tabBar.scrollEdgeAppearance = tabBar.standardAppearance } // set tabba..
Delegate ํจํด์ ์ฌ์ฉํ๋ฉด์ Protocol ์ ๋ง๋ค์๋ค. ๊ทธ๋ฐ๋ฐ SwiftLint ์์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒฝ๊ณ ๊ฐ ๋ฐ์ํ๋ค! delegate ๋ reference cycle ์ ํผํ๊ธฐ ์ํด์ weak(์ฝํ ์ฐธ์กฐ)๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค. delegate protocol ์ weak(์ฝํ ์ฐธ์กฐ)๋ฅผ ์ํด์ ํด๋์ค ์ ์ฉ ์ด์ด์ผ ํ๋ค. Delegate ๋ฅผ weak ๋ก ์ ์ธํ์ ์ธ์คํด์คํ ํด์ ์ฐธ์กฐํ ๋ Retain ์ด ์๊ธด๋ค๊ณ ํด์. ๊ทธ๋ฐ๋ฐ protocol ์ ํด๋์ค๋ ๊ตฌ์กฐ์ฒด์ฒ๋ผ ์ธ์คํด์คํ ๋๋ ๊ฒ์ด ์๋๋ฐ ์ Retain cycle ์ด ์๊ธฐ๋๊ฑธ๊น์? ์๋ฅผ ๋ค์ด ํด๋์ค a์ b๊ฐ ์๋ก๋ฅผ protocol ๋ก ์ฐธ์กฐํ๊ฒ ๋๋ฉด ๊ฐํ ์ฐธ์กฐ๊ฐ ๋๋ฉด์ Retain Cycle ์ด ๋ฐ์ํ๋๊ฑฐ์ฃ ! ๊ทธ๋์ weak ๋ฅผ ์ ์ธํด์ refer..
๋ค์์ ์ ๊ฐ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์์ฑํ๋ ๋์ค ๊ธฐ๋กํ๊ณ ์ถ์ ๋ด์ฉ์ด๋ผ์ ๊ทธ๋๋ก ๊ฐ์ ธ์์ต๋๋ค. ์ถ๋ฐ extension UIViewController { func makeAlert(title : String, message : String, okAction : ((UIAlertAction) -> Void)? = nil, completion : (() -> ())? = nil) { let alertViewController = UIAlertController(title: title, message: message, preferredStyle: .alert) let okAction = UIAlertAction(title: "ํ์ธ", style: .default, handler: okAction) alertViewCont..
- WWDC
- ์๋ฒํต์
- Swift
- SwiftUI
- CloneCoding
- MVVM
- rxswift
- RxCocoa
- projectsetting
- WWDC22
- Algorithm
- MOYA
- github
- Notification
- urlsession
- containerBackground
- IOS
- configurable widget
- OpenSourceLibrary
- watchOS
- Objective-C
- YPImagePicker
- UserDefaults
- 2022 KAKAO TECH INTERNSHIP
- APNS
- Firebase
- WidgetKit
- async/await
- Protocol
- Widget
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday