๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (454)
Bibi's DevLog ๐ค๐
https://hryang.tistory.com/23 ๋จผ์ ์ํ๋ ํฐํธ ํ์ผ์ ๋ค์ด๋ก๋๋ฐ๊ณ , ํ๋ก์ ํธ์ ํฌํจ์ํค๊ณ , Info.plist์ ๋ฑ๋กํด ์ฃผ์ด์ผ ํ๋ค. ์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ๋ค. ์ดํ ํฐํธ ํ์ผ์ ์ด๋ฆ(ํ์ฅ์ ์ ์ธ)์ UIFont(name:)์ผ๋ก ์ง์ ํ๋ค. import UIKit enum CustomFont { case santanaBlack } extension UIFont { static func customFont(_ name: CustomFont) -> UIFont { switch name { case .santanaBlack: // set font and size you want return UIFont(name: "Santana-Black", size: 32) ?? UIFont() } } }
UIColor extension์ผ๋ก ๊น๋ํ๊ฒ ํํํ๊ธฐ ๋ค์ํ UIColor ์ง์ ์์์ ์ต์คํ ์ ์ผ๋ก ๋ถ๋ฆฌํด ๋ณด๋ผ๊ณ ํด์ ์ฐพ์๋๋ฐ, ์ข์ ๋ฐฉ๋ฒ์ธ ๊ฒ ๊ฐ๋ค. init : rgb ์ํ ๊ธฐ๋ณธ๊ฐ์ 1๋ก ์ง์ ํ๋ convenience init customColor : ์ง์ ๋ ์์์ colorLiteral๋ก ํํ // // UIColorExtension.swift // starbuckst // // Created by Bibi on 2022/05/11. // import UIKit enum CustomColor { case white } extension UIColor { convenience init(red: Int, green: Int, blue: Int, a: Int = 1) { self.init( red: C..
TDD, ๋จ์ ํ ์คํธ ํ ์คํธ ๋ฉ์๋๊ฐ private์ด๋ฉด ๋ฌด์กฐ๊ฑด ์ฑ๊ณต์ผ๋ก ๋์ค๋ ์กฐ์ฌํ์.. https://velog.io/@minni/TDD%EC%99%80-Swift-XCTest-%ED%99%9C%EC%9A%A9%ED%95%98%EA%B8%B0 TDD : Test Driven Development ๊ธฐ์กด์ ์ค๊ณ -> ๊ฐ๋ฐ -> ํ ์คํธ ๊ฐ ์๋, ์ค๊ณ -> ํ ์คํธ -> ๊ฐ๋ฐ ์ ์์๋ก ์์ ์ค๊ณ ๋ฌธ์ ๋ก ์ธํ ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ก์๋ผ ์ ์๋ค. TDD์ ์ฅ์ ๋๋ฒ๊น ์๊ฐ์ ๋จ์ถํ ์ ์๋ค. ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๊ฐ ๊ฐ๋ฅํ๋ค. ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํ๋ค. ํ ์คํธ๋ฅผ ์๋ํํ๊ณ ํ ์คํธ ๋ฌธ์๋ก ์ผ์ ์ ์๋ค. Red, Green, Blue / Triple A (Arrange, Act, Assert) ๋งค ๊ตฌํ ๋จ๊ณ๋ง๋ค Red - Gr..
220428 StackView์ subviews ์ง์ฐ๊ธฐ - .subviews, .arrangedSubviews, .removeArrangedSubview if badgeStackView.subviews.count != .zero { badgeStackView.clearSubviews() // ์๋ ์ต์คํ ์ ์ฐธ๊ณ } ์๋์ ๊ฐ์ด UIStackView์ ์ต์คํ ์ ์ผ๋ก ๋ง๋ค์ด ๋๊ณ ์ฌ์ฉํ๋ฉด ํธํจ. import Foundation import UIKit extension UIStackView { func clearSubviews() { self.arrangedSubviews.forEach { view in self.removeArrangedSubview(view) // ๋ถ๋ชจ๋ทฐ์์๋ ์์ ๋ทฐ๋ฅผ ์ง์์ฃผ๊ณ view.r..
[Git] rebase ์ถฉ๋ ํด๊ฒฐํ๊ธฐ ์ถฉ๋์ด ๋ ํ์ผ์ ์ด๋ฉด ์ด๋์์ ์ถฉ๋์ด ๋ฐ์ํ๋์ง ํ์๋์ด ์๋ค. ์ถฉ๋ ํ์ผ๋ค์ ์ด์ด ์ต์ข ๋จธ์งํ ๋ด์ฉ๋ค๋ก ์ ๋ฆฌํ๋ค. git add . git commit : ์ถฉ๋ ํด๊ฒฐํ ๋ด์ฉ์ ์ปค๋ฐ git reabse --continue ๋ชจ๋ ์ถฉ๋ ํด๊ฒฐ ํ ์ ๋ ฅํ๋ค.
220426 [Swift] JSON API์ ๋คํธ์ํฌ ํต์ ํ๊ธฐ 1. HTTPManager (URLManager) ๋ง๋ค๊ธฐ HTTP ์์ฒญ์ ๋ณด๋ด๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ ์ญํ . URLSession URL completionHandler : '์๋ฃ ์ฒ๋ฆฌ๊ธฐ' HTTPManager import Foundation import os // HTTP ์์ฒญ์ ๋ณด๋ด๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋ ์ญํ final class HTTPManager { static func requestGET(url: String, complete: @escaping (Data) -> ()) { // complete @escaping : ํด๋ก์ ๊ฐ ๋ฐ๋ก ์คํ๋์ง ์๊ณ , ์กฐ๊ฑด์ ํด๋น๋ ๋ ํด๋ก์ ๊ฐ ์คํ๋จ guard let validURL = URL(s..
fetch, rebase fetch : (๋ป : ๊ฐ์ ธ์ค๋ค) - ์๊ฒฉ ์ ์ฅ์์ ๋ด์ฉ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ค๋ ๊ฒ (๋ณํฉ์ ํ์ง ์์) pull : (๋ป : ๋น๊ฒจ์ค๋ค) - ์๊ฒฉ ์ ์ฅ์์ ๋ด์ฉ์ ๋ก์ปฌ๋ก ๊ฐ์ ธ์ ๋ณํฉํ๋ ๊ฒ merge : ๋ ๋ธ๋์น๋ฅผ ํฉ์น๋ ๊ฒ A๋ธ๋์น์ B๋ธ๋์น๋ฅผ ํฉ์น ๋, ๊ฐ์์ ์ปค๋ฐ ๋ด์ญ์ ๊ทธ๋๋ก ๋จ๊น rebase : ๋ ๋ธ๋์น๋ฅผ ํฉ์น๋ ๊ฒ A๋ธ๋์น์ B๋ธ๋์น๋ฅผ ํฉ์น ๋, B์ ์ปค๋ฐ์ A์ ์ปค๋ฐ ๋ค์ ์์นํ๊ฒ ๋จ ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋์ ๋งค๋๋ฌ์ด ๋ธ๋์น๊ฐ ๋จ
UIScrollView https://velog.io/@nnnyeong/iOS-UIScrollView-%EB%8B%A4%EB%A3%A8%EA%B8%B0-autolayout-programatically https://velog.io/@inwoodev/Swift-ScrollView-%EC%BD%94%EB%93%9C%EB%A1%9C%ED%99%94%EB%A9%B4%EC%97%90-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0 UIScrollView : A View that allows the scrolling and zooming of its contained views. UIScrollView - ContentLayout, FrameLayout UIScrollView์ ๋ ์์ Conte..