์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- TCA
- swift
- Flutter
- designpattern
- BOJ
- XCTest
- ํจ์คํธ์บ ํผ์ค
- RxSwift
- BFS
- raywenderlich
- tableView
- CollectionView
- ios
- rxcocoa
- node.js
- combine
- UIKit
- Xcode
- visionOS
- Kuring
- SnapKit
- ๋ฐฑ์ค
- realm
- Swfit
- reactorkit
- arkit
- SwiftUI
- ํ๋ก๊ทธ๋๋จธ์ค
- MVVM
- Lv2
- Today
- Total
๋ชฉ๋กiOSํ๋ก์ ํธ/โ๏ธ Kuring (27)
lgvv98
โ ์ด๋ฒ ์๊ฐ์๋ StackView๋ฅผ programming(์ฝ๋) ์ ์ผ๋ก ์ฌ์ฉํ๋ ๋ฒ์ ๋ํด์ ์์๋ณผ๊ฑฐ์ผ. StackView์ ๊ฒฝ์ฐ์๋ ์ด์ ์๋ storyboard๋ก ์ฌ์ฉํ๊ธฐ์ ํฌ๊ฒ ๋ฌธ์ ๊ฐ ๋์ง ์์๋๋ฐ, ๋ง์ ์ฝ๋๋ก ์์ฑํ๋๊น ์ด...? ํ๋ ์ํฉ์ด ์๊ฒผ์์ด. ๐ ์ด...? ํ๋ ์ํฉ์ด๋? ์คํ๋ทฐ์ addSubView๋ฅผ ํ๋๋ฐ, 1:1 ๋น์จ์ด ์๋๋ผ ๊ฐ ์ปดํฌ๋ํธ๊ฐ StackView ์ ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๋ฌธ์ ! ๐ ๊ทธ๋ ๋ค๋ฉด ์ด๋ป๊ฒ ํด๊ฒฐํ๋๋? var stackView = UIStackView().then { $0.translatesAutoresizingMaskIntoConstraints = false $0.backgroundColor = .white $0.distribution = .fillEqually } ..
โ ์ด๋ฒ ์๊ฐ์๋ SearchBar์ ๋ํด์ ์กฐ๊ธ ๋ ์์๋ณด๊ณ ๊ฐ ์์ ์ด์ผ. ์์ ๋ณด์ด๋ ๊ทธ๋ฆผ๋๋ก ์์น๋ฐ๋ฅผ ๋ง๋๋ ค๊ณ ํด. ๊ทธ๋ฐ๋ฐ...! ์ด์ ์ Customizing์ ํด๋ณธ ๊ธฐ์ต์ด ์์๋๋ฐ, ์ฝ๋๋ก๋ง ์์ฑํ๋ ค๋ ๋ ๋ค๋ฅธ๋๋.. ๊ธฐ๋ณธ์ ์ผ๋ก then์ ์ฌ์ฉํด์ ์ปค์คํฐ๋ง์ด์ง์ ํ๊ณ ์๋๋ฐ, ์์ํ๊ธฐ์ ์ ์๊ณ ๋์ด๊ฐ์ผํ๋ ์ ! ๐ UISearchBar๋ ์์ UITextField๋ฅผ ๊ฐ๊ณ ์๋ค. (๊ณ์ธต ๊ตฌ์กฐ) var searchBar = UISearchBar().then { $0.placeholder = "๊ฒ์์ด๋ฅผ ์ ๋ ฅํด์ฃผ์ธ์." $0.searchBarStyle = .minimal $0.searchTextField.layer.borderColor = UIColor.green.cgColor $0.searchTextF..
โ ์ด๋ฒ ์๊ฐ์๋ FCM์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. ๐ ๋ค์ด๊ฐ๊ธฐ์ ์์... โ๏ธ ์๋ฎฌ๋ ์ดํฐ์์๋ ์๋๋์ง ์๋๋ค๊ณ ํฉ๋๋ค. ์ค๊ธฐ๊ธฐ์์ ํ ์คํธ ํด์ฃผ์ธ์. โ ๋ชฉ์ฐจ 1๏ธโฃ AppDelegate.Swift 2๏ธโฃ Xcode -> Targets ์ค์ ํ๊ธฐ 3๏ธโฃ APNs ์ค์ ํ๊ธฐ 4๏ธโฃ Firebase console โ AppDelegate.Swift AppDelegate์ฝ๋ ์์ฑ์ ์์๋ณด์..! // // AppDelegate.swift // KakaoShareFCM // // Created by Hamlit Jason on 2021/12/17. // import UIKit import Firebase import UserNotifications @main class AppDelegate: UIResponde..
โ ์ด๋ฒ ์๊ฐ์๋ so easyํ๊ฒ ํด๊ฒฐํ์ง๋ง, 2์ค๋ก ํํํ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณผ ์์ ์ด์ผ. ๋ด๊ฐ ์ด์ Then๋ฐ SnapKit๊ณผ ๊ทธ๋ฆฌ๊ณ ์คํ ๋ฆฌ๋ณด๋ ์์ด ์ฝ๋๋ก๋ง ์์ฑํ๊ณ ์๊ธฐ ๋๋ฌธ์, AutoLayout์ ์ฌ์ฉํ์ง ๋ชปํด์ ์ด๋ ค์์ด ๊ฝค๋ ์์์ด. ์ฒ์์๋ UILabel์ 2์ค๋ก ํํํ๋ ๊ฒ์ ๋ชฐ๋ผ์ ๊ทธ๋ฅ UILabel 2๊ฐ๋ฅผ ์ฌ์ฉํ์๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด UILabel()์ด ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ธ์๊ฐ 1์ค๋ก ๋ฐ๋๊ฑฐ๋, ์ฌ๋ผ์ง๊ฑฐ๋, ์์น๊ฐ ์กฐ์ ๋๋ค๋ฉด(๋ ์ด์์์ ๋ค์ ์ก์์ผํจ) ์๊ฐ๋ณด๋ค ๋ณต์กํด์ง๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํด. ๊ทธ๋์ ๋๋ ํ๋์ ๋ ์ด๋ธ์ 2์ค๋ก ์ฌ์ฉํด์ผํจ์ ๋๊ผ๋๋ฐ, ์๋์ ์ฝ๋๋ฅผ ๋ณด๋๋ก ํ์ ๐ private var AlarmLabel = UILabel().then { $0.text = "์๋ฆผ ์ค์ ํ ํญ๋ชฉ์ด ์..
โ ์ด๋ฒ ์๊ฐ์๋ ์ ๋ง ํ๋ณตํ ํค๋ณด๋ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ์ ๋ํด์ ์์๋ณด์...! ๋ด๊ฐ ์ ๋ง ๊ณ ๋ฏผํ๋๊ฒ, textView ์ธ์ ๋ค๋ฅธ ๊ณณ์ ํด๋ฆญํ์ ๋, ์ด๋ป๊ฒ resignFirstResponder๋ฅผ ๋ฐ์์ ํค๋ณด๋๋ฅผ ๋ด๋ฆด์ง ์์ฒญ ์๊ฐ์ ๋ง์ดํ๋๋ฐ, ์์ ์ ๋ค๋ฅธ ํ์ ์์๋ textView์ธ์ ๋ค๋ฅธ ๊ณณ์ด ํฐ์น๋ฅผ ๋ฐ์ผ๋ฉด ์ ๋ถ ๋ค ํ๋์ฉ ๋ด๋ฆฌ๊ฒ๋ ๋ง๋ค์ด์ ๊ฐ๋ ๋ทฐ์ ๋น ๊ณต๊ฐ์ ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ์ง ์๋ ์์ ๋ฌธ์ ๋ฅผ ๊ฐ๊ณ ์์์ด. ํ! ์ง! ๋ง! ๋ฉ์๋๋ฅผ ํ๋ํ๋ ๋ณด๋ ์ค์ ๊ฐ์๊ธฐ ์์ฒญ๋ ์์ด๋์ด๊ฐ ๋ ์ค๋ฅด๊ฒ ๋๋๋ฐ, ๐ ์ด๋ป๊ฒ ํด๊ฒฐํ๋๋? override func touchesBegan(_ touches: Set, with event: UIEvent?) { let touch = touches.first as! UITouch i..
โ ์ด๋ฒ ์๊ฐ์๋ ๋ฐ์ํ ์๋ฌ์ ๋ํด์ ์์๋ณด์...! ์น๋ทฐ๋ฅผ ์ฌ์ฉํ๋๋ฐ ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ํ๋๋ฉด์ ์ธ๋์ผ์ดํฐ๊ฐ stop๋๊ณ ์น ํ์ด์ง๋ก ๋์ด๊ฐ์ง ์๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. โ ํด๊ฒฐ๋ฐฉ๋ฒ์ Info.plist์์ ์ค์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.