Bibi's DevLog ๐ค๐
์์นด์ด๋น - URLArchiving (220512 ์์ ) ๋ณธ๋ฌธ
Daily URLArchiving
[Action Plan] ํ๋ฃจ 1๊ฐ, ์ข์ ๊ธ URL์ ์์นด์ด๋นํ๊ณ ์๊ฐ์ ํ ์ค ์ ๋๋ค.
layoutIfNeeded() - ๋ทฐ/๋ ์ด์์ ์ ๋ฐ์ดํธ ๊ด๋ จ ๋ฉ์๋
(jed) ์ค์ํํธ์ Delegate Pattern ์ ๋ฆฌ
constraint ์ฝ๊ฒ ์ถ๊ฐํ๊ธฐ
- ๊ทธ๋ฆฌ๊ณ UILabel ์์ constraint๋ฅผ ์ก๋ ๋ฐฉ๋ฒ์ ๋ํด์ ๊ณ ๋ฏผํ๊ณ ๊ณ์๋๊ตฐ์! UILabel์ padding๊ฐ์ ์ค์ ํ ๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ ์์ต๋๋ค. ์ด ๋๊ฐ์ง๋ฅผ ํค์๋๋ก ํ ๋ฒ ์ฐพ์๋ณด์๋ฉด ์ํ์๋ ์ค์ ๋ฐฉ๋ฒ์ ์ข ๋ ๊ฐ๊น์์ง ๊ฒ ๊ฐ์์ โบ๏ธ
2022.05
0524(ํ)
- UITabBarController์ UINavigationController ํจ๊ป ์ฌ์ฉํ๊ธฐ (Embed in)
- UINavigationController(rootViewController:)๋ผ๋ ์์ฑ์๊ฐ ์๋ค๋ ์ฌ์ค!
- UITabBarController์ ๋ฐฐ๊ฒฝ์ด ๊ฒ์์์ด ๋๋ ํ์
- iOS 15๋ถํฐ ํ์ธ๋ ํ์
0523(์)
- ์๊ณ ๋ฆฌ์ฆ - ํ๋ก๊ทธ๋๋จธ์ค ์ฒด์ก๋ณต (ํ์๋ฒ)
- https://babbab2.tistory.com/108
- for๋ฅผ ๋ ๋ ์ ์ปฌ๋ ์ ์ด ๋ ๋ค var์ด๋ฉด ๊ผฌ์ผ ์ ์์ผ๋, ๋ ์ค ํ๋๋ผ๋ let์ผ๋ก ์ ์ธํด ์ฃผ๋ ๊ฒ ์ข๋ค.
- ์ปฌ๋ ์ ๋ด์ ๊ฒน์น๋ ์์๊ฐ ์๋ค๋ฉด(์์ด์ผ ํ๋ค๋ฉด) Set ์ฌ์ฉ์ ๊ณ ๋ คํด ๋ณด์.
0520(๊ธ)
- ChildViewController ์ถ๊ฐํ๊ธฐ
- ๊ฐ์ฅ ๊ฐ๊ฒฐํ childVC ์ถ๊ฐํ๊ธฐ ์ค๋ช .
0519(๋ชฉ)
- URLSessionDataTask, URLSessionUploadTask, URLSessionDownloadTask
- URLSession ๊ด๋ จ ๋ชจ๋
- DataTask : ์๋ฒ๋ก๋ถํฐ (์ฃผ๋ก get์ผ๋ก) ๋ค์ด๋ก๋ํ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ๋ก ์ ์ฅํ ๋
- UploadTask : ์๋ฒ์ (์ฃผ๋ก post, put์ผ๋ก) ๋์คํฌ->์น์๋ฒ๋ก ํ์ผ์ ์ ์กํ ๋
- DownloadTask : ์๋ฒ์์ ๋ฐ์ดํฐ/ํ์ผ์ ๋ค์ด๋ก๋ํ ๋
0518(์)
- URLSessionConfiguration
- shared : ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ฒญ์ ์ํด ์ ํฉ. ์ปค์คํฐ๋ง์ด์ง์ ๋ถ๊ฐ.
- Default : shared์ ๋น์ทํ๋, delegate๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์ง์ ์ผ๋ก ์ป์ ์ ์๋ค.
- Ephemeral(์์) : Default์ ๋น์ทํ๋, ์บ์, ์ฟ ํค, ์๊ฒฉ์ฆ๋ช ์ ๋์คํฌ์ ์ฐ์ง ์์
- Background : ๋ฐฑ๊ทธ๋ผ์ด๋(์ฑ์ด ์คํ์ค์ด์ง ์์ ๋)์์๋ ์ปจํ ์ธ ๋ฅผ ์ ๋ก๋/๋ค์ด๋ก๋ ํ ์ ์๊ฒ ํด์ค.
0517(ํ)
- UITabBarController ์ฝ๋๋ก ๋ง๋ค๊ธฐ(https://www.appsdeveloperblog.com/create-uitabbarcontroller-programmatically/)
- TabBarController๋ viewControllers๋ผ๋ ํ๋กํผํฐ๋ฅผ ๊ฐ์ง๊ณ , ํญ๋ฐ๋ง๋ค UITabBarItem์ ์ค์ ํ ์ ์๋ค๋ ์ฌ์ค!
0516(์)
- CollectionView์ ์น์
ํค๋ ๋ฃ๋ ๋ฒ
- UICollectionReusableView๋ฅผ ์ฌ์ฉํ๋ค๋ ์ฌ์ค..!
0513(๊ธ)
- UINavigationController์ Back(๋ค๋ก)๋ฒํผ์ด ๋๋ ธ์ ๋ ์คํํ ๋์ ์ ์ํ๊ธฐ
- viewWillDisappear()์ self.isMovingFromParentViewController ํ๋กํผํฐ๋ฅผ ํ์ฉํ๋ค!
0512(๋ชฉ)
- Swift์์ Codable ์ฌ์ฉํ๊ธฐ
- Json๊ณผ Swift๊ฐ์ฒด๋ฅผ ๋ฐ์ธ๋ฉํ๋ ๋ค์ํ ์์ ์ ๊ณต!
- JSON์ null์ ์ต์ ๋๋ก ๋์ํด ์ค๋ค.
0511
- UICollectionView ์ด๊ธฐํ ์๋ฌ : 'UICollectionView must be initialized with a non-nil layout parameter'
- UICollectionView๋ฅผ ์ด๊ธฐํํ ๋๋ ๋ฐ๋์ ๋ ์ด์์์ ์ง์ ํด ์ฃผ์ด์ผ ํ๋๋ฐ, ์ง์ ํ์ง ์์์ ๋ฐ์ํ๋ ๋ฐํ์ ์๋ฌ.
- โ UICollectionView()
- โญ๏ธ UICollectionView(frame: .zero, collectionViewLayout: UICollectionViewFlowLayout())
0510
- ์ฝ๋๋ก UIButton์ ์ก์
์ถ๊ฐํ๊ธฐ - addTarget()๊ณผ addAction(), UIAction
- ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ addTarget์ ์ฌ์ฉํ๋ค.
- SFSymbols (์์ด์ฝ) ์ด๋ฏธ์ง ์ฝ๋๋ก ์ถ๊ฐํ๊ธฐ, ์์ ๋ณ๊ฒฝํ๊ธฐ
0509
- Tab Bar Item์ ์์ด์ฝ ์ปค์คํ
ํ๊ธฐ : Storyboard, Code
- ํญ ๋ฐ ์์ดํ ์ ์์ด์ฝ(๊ทธ๋ฆผ)์ ์ํ๋ ๋๋ก ๋ฐ๊พธ๊ธฐ. Tab Bar Item์ ์ ํํ ๋ค์ Selected Image / Image๋ฅผ ์ ํํ๋ ๊ฒ ํฌ์ธํธ!
- ๊น ํน์ ๋ธ๋์น๋ง ํด๋ก ํ๊ธฐ
- git clone -b {branch_name} --single-branch {repository_URL}
2022.04
0429
- ์ด๋ฏธ์ง ์ฃผ์๋ฅผ ํตํด ์ด๋ฏธ์ง ๋ฐ์์ค๊ณ ์บ์ฑํ๊ธฐ : URLSession.downloadTask
- ์บ์ฑํ๋ ๋ฐฉ๋ฒ๊น์ง ์ค๋ช ๋์ด ์๋ค. URLSession.dataTask๋ฅผ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ๋ณด๋ค ์ข ๋ ๊น๋ค๋ก์ด ๋ถ๋ถ์ด ๋ง๋ค. ๋์ ๋ค์ด๋ก๋์ ์ต์ ํ ๋์ด ์๋ค.
0428
- Git - ์ปค๋ฐํ์ง ์์ ๋ณ๊ฒฝ์ฌํญ์ ๋ค๋ฅธ ๋ธ๋์น๋ก ์ปค๋ฐํ๊ธฐ
- git stash (์์์ ์ฅ) -> git checkout -b ์๋ธ๋์น -> git stash pop (์์์ ์ฅ ๋ถ๋ฌ์ค๊ธฐ) -> add, commit
0427
- UILabel.attributedText : UILabel์ ๊ธ์ ์ผ๋ถ์ ํฌ๊ธฐ/์์/ํฐํธ ๋ณ๊ฒฝํ๊ธฐ, ์ทจ์์ ๊ธ๊ธฐ : (1), (2)
- NSMutableAttributedString(string:) ๊ณผ .addAttribute(_:value:range:)์ ๊ฐ๋ ์ ์ดํดํ๋ ๊ฒ ์ค์ํ ๊ฒ ๊ฐ๋ค!
0426
- @escaping ํด๋ก์
- @escaping ํด๋ก์ ๋ ๊ทธ ํจ์ ๋ด๋ถ๊ฐ ์๋๋ผ ๋ฐ์์(escaping) ์คํ๋๋ค. ๋ณดํต ํด๋ก์ ๊ฐ ๋ค๋ฅธ ๋ณ์์ ์ ์ฅ๋์ด ๋์ค์ ์คํ๋๊ฑฐ๋, ๋น๋๊ธฐ๋ก ์คํ๋ ๋ escaping ํด๋ก์ ๊ฐ ์ฌ์ฉ๋๋ค.
0425
- UIColor extension์ผ๋ก ๊น๋ํ๊ฒ ํํํ๊ธฐ
- ๋ค์ํ UIColor ์ง์ ์์์ ์ต์คํ ์ ์ผ๋ก ๋ถ๋ฆฌํด ๋ณด๋ผ๊ณ ํด์ ์ฐพ์๋๋ฐ, ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค.
0424
- fetch, rebase
- ํท๊ฐ๋ ธ๋ ๊ฐ๋ ๋ค์ ๋์ง์ด ๋ณด๋ ์ข ๋จธ๋ฆฟ์์ด ์ ๋ฆฌ๊ฐ ๋๋ค..!!
0422
- constraint ์ฝ๊ฒ ์ถ๊ฐํ๊ธฐ
- ๋ฆฌ๋ทฐ์ด๋์ด ์๋ ค์ฃผ์ Constraint ์ถ๊ฐ๋ฅผ ์ฝ๊ฒ ํ๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ!
0421
- SwiftLint in Use
- SwiftLint ์ค๋ช ๊ณผ ์์. ๋ถ์กฑํ๋ค๋ฉด SwiftLint Github ๋ฆฌ๋๋ฏธ ์ฐธ๊ณ .
0420
- ์ปฌ๋ ์ ๋ทฐ ํค๋ ๋ง๋ค๊ธฐ - UICollectionReusableView
- UICollectionViewCell๊ณผ UICollectionReusableView์ ์ฐจ์ด์ ์ ์๊ฒ ๋์๋ค!
0419
- UILabel ํ๊ธ ์ค๋ฐ๊ฟํ๊ธฐ
- UILabel.lineBreakStrategy = .hangulWordPriority ๋ก ์ค์ ํ๋ฉด ํ๊ธ ์ค๋ฐ๊ฟ์ ์ธ์ํด ์ค๋ค.
- hangul์ Xcode์์ ๋ณด๊ฒ ๋๋ค๋ ์ ๊ธฐํ๋ค..!!!
- ์ถ๊ฐ๋ก ์ฌ๋ฌ ์ค ๋ผ๋ฒจ์ ์ง์ํ๋ ค๋ฉด UIlabel.numberOfLines = 0 ์ผ๋ก ์ค์ ํ๋ฉด ๋๋ค.
- To remove any maximum limit, and use as many lines as needed, set the value of this property to 0.
0418
- Swift ~= ์ฐ์ฐ์
- ๋ฒ์๋ฅผ ์ฒดํฌํ๋ ์ฐ์ฐ์. ๋์์ด ํน์ ๋ฒ์์ ์ํ๋์ง ์๋์ง ์๋ ค์ค๋ค. ์ซ์์ ๋ฌธ์์ด์ ์ฌ์ฉ ๊ฐ๋ฅ.
0415
- Mase&Jee์ ๋คํธ์ํฌ ํต์ ๊ตฌํ
- ์ด์ฌํ ๋ฐ๋ผํด์ ๊ฒจ์ฐ๊ฒจ์ฐ ๋ง์ง๋ง ๋ ์ ์๋ฒ์์ ํต์ ์ ์ฑ๊ณตํ๋ค.. ๊ณ ๋ง์์ ์ฌ๋ฌ๋ถ!
0414
- ์ฝ๋๋ก UIButton ๊ธ์ ๋ฐ๊พธ๊ธฐ
- Button.text = "๋ฒํผ" ์ด ์๋๋ผ..!
- Button.setTitle("๋ฒํผ", for: .normal) ๊ณผ ๊ฐ์ด ๋ณ๊ฒฝํด์ผ ํ๋ค.
0413
- ํ๋ฉด ์ ํ ๋ฐฉ๋ฒ - Segue, Modal, NavigationController
- Segue๋ ์คํ ๋ฆฌ๋ณด๋๊ฐ ์์ ๋๋ง ์ฌ์ฉ ๊ฐ๋ฅ
- Modal์ ๋ทฐ์ปจ๋ง์ผ๋ก๋ ์ฌ์ฉ ๊ฐ๋ฅ
0412
- UIButton System Icon (Image) ์ฝ๋๋ก ์ฌ์ฉํ๋ ๋ฒ
- UIButton.setImage(UIImage(systemName: "xmark"), for: .normal)์ ๊ฐ์ด IB์์ ์กฐํ๋ ์์ด์ฝ ์ด๋ฆ์ ๋ฃ์ด ์ค๋ค.
- ์ญ์ ๋ชจ๋ ์คํ ๋ฆฌ๋ณด๋ ์ค์ ์ ์ฝ๋๋ก ๊ฐ๋ฅํ๊ตฌ๋..๋ฅผ ๋ ๋๊ผ๋ค. ๊ทผ๋ฐ ์์ด์ฝ ์ฐพ์ ์ฐ๊ธฐ๊ฐ ์ฝ์ง ์๋ค
- ํ๋ฒ๊ฑฐ ๋ฒํผ ์ด๋ฆ : line.3.horizontal ์ด์๋ค..!!
0411
- (StackView) addArrangedSubview(_:)
- UIStackView์์ ๋์ ์ผ๋ก subView๋ฅผ ์ถ๊ฐํ๋ ๋ฉ์๋.
- addArrangedSubview(_:)
- insertArrangedSubview(_:at:)
- removeArrangedSubview(_:)
- StackView๋ arrangedSubviews๋ผ๋ ํ๋กํผํฐ(๋ฐฐ์ด)๋ก view๋ค์ ๋ ์ด์์์ ๊ด๋ฆฌํจ.
- ๊ทธ๋ฅ addSubview()๊ฐ ์๋ ๋ค๋ฅธ ๋ฉ์๋๋ฅผ ์ฐ๊ธธ๋ ์ ๊ธฐํด์ ๊ฒ์ํด ๋ณด์๋ค!
0408
- left, right์ leading, trailing์ ์ฐจ์ด
- leading/trailing : reading direction(์ฝ๋ ๋ฐฉํฅ) ์ ์์/๋์ ๋ํ๋. ์ค์ ์ธ์ด์ ์ํฅ์ ๋ฐ์.
- ์ ํ ๊ณต์์ ์ผ๋ก left/right constraint๋ณด๋ค leading/trailing constraint์ ์ฌ์ฉ์ ๊ถ์ฅ.
0407
- UIView ๋ชจ์๋ฆฌ ๋ฅ๊ธ๋ฆฌ๊ธฐ
-
view.layer.cornerRadius = 5 view.layer.masksToBounds = true
- cornerRadius๋ง ํ๋ฉด ๋๋ ์ค ์์๋๋ฐ ํ ์ค์ ๋ ์ถ๊ฐํด์ผ ํ๋ค.
0406
- Container View Controller๋?
- ์ปจํ ์ด๋ ๋ทฐ ์ปจํธ๋กค๋ฌ์ ๊ฐ๋ ๊ณผ ์ฌ์ฉํ๋ ์ด์ ์ ๋ํด ์๋ ค์ค๋ค. ์ด๊ฒ๋ ๋จ์ผ์ฑ ์์ ์ํด ์ฌ์ฉํ๋ ๊ฑฐ์๋ค๋ ์ ๊ธฐํ๋ค.
0405
- ์๊ฒฉ ๋ธ๋์น๋ฅผ ์ถ์ trackingํ๋ ์๋ก์ด ๋ธ๋์น checkoutํ๊ธฐ
- ๋ธ๋์น๋ฅผ ๋ง๋ค๊ณ remote๋ธ๋์น๋ก ์ฐ๊ฒฐํ์ง ์๊ณ , ๋ธ๋์น ์์ฑ ๋ ๋ถํฐ ์๊ฒฉ ๋ธ๋์น๋ฅผ ํจ๊ป ์์ฑํ ์ ์๋ค!
- git checkout --track -b ๋ธ๋์น๋ช origin/๋ธ๋์น๋ช
0404
- private(set)
- setter๋ง์ด private๋ผ๋ ๋ป. ํด๋น ๊ตฌ์กฐ์ฒด/ํด๋์ค ๋ด์์๋ง set์ด ๊ฐ๋ฅํจ์ ์๋ฏธํจ. ์ฆ getter๋ private์ด ์๋๋ฏ๋ก ์ธ๋ถ์์๋ ์ ๊ทผ์ด ๊ฐ๋ฅํจ์ ์๋ฏธ.
- public private(set) var numberOfCards = 0
- setter๋ private, ๊ฐ ์์ฒด๋ public์์ ์๋ฏธ.
- setter๋ง์ด getter๋ณด๋ค ๋ ์ ํ์ ์ธ ์ ๊ทผ ์์ค์ ๊ฐ์ง ์ ์๋ค.
2022.03
0330
- swift subview remove
- addSubview()๋ง ํ๊ณ ์ง์ธ ์๊ฐ์ ๋ชป ํ๋๋ฐ, view.removeFromSuperView()๋ผ๋ ์ ๊ธฐํ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
0331
- ๋ทฐ์ Frame, Bound์ x, y, width, height ๊ตฌํ๊ธฐ
- ๊ทธ๋ ค์ ธ ์๋ ๋ทฐ์ origin๊ณผ size๋ฅผ ๊ตฌํ๊ธฐ : view.frame.origin.x, view.frame.size.width. (bound๋ ๋ง์ฐฌ๊ฐ์ง). ๋์ด ๋น์ทํด ๋ณด์ฌ์ ์์ง๋ ํท๊ฐ๋ฆฐ๋ค.