UIDevice ๋ฅผ extension ์ผ๋ก ์์ดํฐ์ ๊ธฐ์ข ์ ๋ฌด๋ฅผ ์ ์ฅํ๋ ๋ณ์๋ฅผ ๋ง๋ ๋ค. import UIKit extension UIDevice { public var isiPhoneSE: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phone && (UIScreen.main.bounds.size.height == 568 && UIScreen.main.bounds.size.width == 320) { return true } return false } public var isiPhoneSE2: Bool { if UIDevice.current.userInterfaceIdiom == UIUserInterfaceIdiom.phon..
viewDidLoad() ์์ ํ๋ฉด์ ํ ํ๋ฉด ์ํ๋ ๋ทฐ ์ ํ์ด ์ด๋ฃจ์ด์ง์ง ์์๋ค. view ๊ฐ ๋ค ๋ณด์ฌ์ง๊ธฐ ์ ์ ํ๋ฉด์ ํ์ ํ๋ฉด ์์ ๊ฐ์ด ์ฝ์์ฐฝ์ ์ฐํ๋ค. class SplashVC: UIViewController { // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad() // view ๊ฐ ๋ค ๋ณด์ฌ์ง๊ธฐ ์ ์ ํ๋ฉด์ ํ์ ํ๋ฉด ์์ ๊ฐ์ด ์ฝ์์ฐฝ์ ์ฐํ๋ค. // ์์ฐ์ค๋ฝ๊ฒ ๋ทฐ๊ฐ ์ ํ๋์ง๋ ์๋๋ค. presentToLogin() } override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) // ๋ค์๊ณผ ๊ฐ์ด ๋ทฐ๊ฐ ๋ค ๋ํ๋ ํ์ ํ๋ฉด์ ํ๋ฅผ ์งํํด์ผํ..
์ ํ๋ฆฐ์์ ์๋์ฐ ์ค์ ๋ฐ ๋์ ์ผ๋ก ์ ํฌ๊ธฐ ์ค์ backView.layer.cornerRadius = 10 backView.layer.shadowOffset = CGSize(width: 2, height: 2) backView.layer.shadowRadius = 7 backView.layer.shadowColor = UIColor.black.cgColor backView.layer.shadowOpacity = 0.14 ๋ค์๊ณผ ๊ฐ์ด ๋งค์นญ์ด ๋๋ค. ์ฐ๋ฆฐ extension ์ผ๋ก ํธํ๊ฒ ์ฌ์ฉํ ๊ฒ! import Foundation import UIKit extension CALayer { func applyShadow( color: UIColor = .black, alpha: Float = 0.5, x: CG..
UIImageView UITapGestureRecognizer ๋ก ์ก์ ์ค์ ํ๊ธฐ // MARK: - @IBOutlet Properties @IBOutlet var loginImageView: UIImageView! //... // MARK: - Methods func loginTapAction() { let login = UITapGestureRecognizer(target: self, action: #selector(login)) loginImageView.isUserInteractionEnabled = true loginImageView.addGestureRecognizer(login) } // MARK: - @objc Methods @objc func login() { guard let nextVC ..
Customizing the Appearance of Notifications - notifications interface ๋ฅผ ์ปค์คํ ํด๋ณด์ Apple Developer - Customizing the Appearance of Notifications Overview iOS ์ฅ๋น๊ฐ alert ๊ฐ ํฌํจ๋ notification ์ ๋ฐ์ผ๋ฉด ์์คํ ์ alert ๋ด์ฉ์ ๋ ๋จ๊ณ๋ก ํ์ํฉ๋๋ค. ์ฒ์์๋ title, subtitle, two to four lines of body text ๊ฐ ํฌํจ๋ ์ถ์ฝ๋ banner ์ ํ์ํฉ๋๋ค. ์ถ์ฝ๋ banner ๋ฅผ ๋๋ฅด๋ฉด notification-based actions ๊ณผ ์ ์ฒด notification interface ๋ฅผ ํ์ํฉ๋๋ค. ์์คํ ์ ์ถ์ฝ ๋ ๋ฐฐ๋์ ๋ํ ์ธํฐํ..
Declaring Your Actionable Notification Types - notification ์ ์ฐจ๋ณํํ๊ณ notification interface ์ action buttons ๋ํ๊ธฐ notification ์ ๋ํด์ ๊ณต๋ถํด๋ณด๋ค๊ฐ ์ ํ๊ฐ๋ฐ์๋ฌธ์๋ฅผ ์ ๋ฆฌํด๋ณด์๋ค. Overview actionable notifications ๋ ์ ๋ฌ๋ ์๋ฆผ์ ๋ํด์ ๊ด๋ จ์ฑ์ ์คํํ์ง ์๊ณ ๋ ๋ฐ์ํ ์ ์๋ค. actionable notification ์ ๊ฒฝ์ฐ ์๋ฆผ ์ธํฐํ์ด์ค ์ธ์ ์๋์ ๊ฐ์ด ํ๋ ์ด์์ ๋ฒํผ์ ํ์ํฉ๋๋ค. ๋ฒํผ์ ํญํ๋ฉด ์ ํด์ง action ์ด ์ฑ์ผ๋ก ์ ์ก๋๊ณ background ์์ ์์ ์ ์ฒ๋ฆฌํ๋ค. actionable notifications ์ ์ง์ํ๊ธฐ ์ํด์ : app ๋ฐ์น ์ ํ๋ ์ด..
- Swift
- ์๋ฒํต์
- UserDefaults
- Protocol
- urlsession
- Notification
- projectsetting
- Algorithm
- watchOS
- containerBackground
- CloneCoding
- 2022 KAKAO TECH INTERNSHIP
- WidgetKit
- SwiftUI
- github
- WWDC
- MOYA
- Objective-C
- Firebase
- configurable widget
- MVVM
- rxswift
- Widget
- OpenSourceLibrary
- APNS
- RxCocoa
- IOS
- async/await
- WWDC22
- YPImagePicker
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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