분류 전체보기
[RxSwift] 개념잡기 (Subscribe, Observable, Subject)
최대한 간단하게 설명해보는 RxSwift iOS 공부하는 사람은 무조건 들어봤을 RxSwift RxSwift는 ReactiveX Swift인데요, reactiveX ? 대충 해석하면 옵저버블을 사용해서 비동기나 event-based를 구성하는 것이다 옵저버블이 뭔데 ????? Observable ? 대충 해석하면 - 옵저버는 옵저버블을 구독한다 - 옵저버는 옵저버블이 방출하는 items에 대해 반응한다 - 옵저버는 대기하지 않고, 반응할 준비를 한 어떠한 형태로 기다린다 items이 어떤건지는 몰라도 일단 옵저버는 옵저버블이 뭔가를 하면 반응한대!! 옵저버가 무슨 형태인지는 몰라도 일단 대기 ㄴㄴ 즉, sync ㄴㄴ 많은 용어들이 나오는데 Observer, Observable, Subscribe 근데 이..
[Swift] Custom Calendar 달의 마지막 날 구하기
이 글은 UI를 제외하고 날짜 계산을 하는 로직만 담고 있습니다 Custom Calendar를 만들다보니 해당하는 달의 마지막 날이 언제인지 계산해야 했다. 알고리즘 처럼 접근하면 윤 달도 계산해줘야 하고 속도 측면에서도 비효율적이라고 생각해서 foundation상에 있는 calendar라는 구조체를 사용해서 만들었다! 먼저 날짜 계산에 필요한 Calendar와 DateFormatter를 만들어주자 let calendar = Calendar(identifier: .gregorian) let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" 첫 날은 무조건 1일이니까 직접 입력해준다 let st = dateFormatter.da..
sw마에스트로 13기 활동후기 (멘토링, 팀프로젝트)
https://990427.tistory.com/84 sw마에스트로 13기 합격후기 (자소서,코테,면접) 합격후 한참 바쁠때 쓰는 합격후기&회고 사실 큰 기대 없이 시작했다. 작년에 굉장히 열심히 준비했음에도 불합의 아픔을 겪었기 때문에,, ㅎㅎ 올해는 고민하다가 나답지 않게 하루전에 자소서 990427.tistory.com 회고와 회상에 가까울 13기 활동후기 글을 써보려고 한다. 요약 소마를 했던 2022년을 한단어로 요약하자면 ✨완벽✨ 이다 소마에서 했던 공부들과 만났던 사람들 모두 너무 감사했던 완벽한 1년이였다..! 누가 나한테 다시 돌아가도 소마 하겠냐고 물어본다면 0.1초의 망설임도 없이 YES다. 예비과정 소마 사무국에서 대부분의 활동 과정들을 노션에 정리해주셨다 예비과정은 아무것도 모르는..
[UIKit] CustomDatePicker 만들기 (2/3)
CustomPickerButton을 만들었으니 DatePicker로 진화해보자 알다시피 나는 이걸 만들기로 했다 📌 UI setting 별거 없다.. 그냥 ㄹㅇ UI setting code open class CustomDatePicker: UIView{ private var Titlelabel = UILabel() private var years = [String]() private var months = [String]() private var days = [String]() private let yearWidth : CGFloat = 126 private let monthWidth : CGFloat = 103 private let dayWidth : CGFloat = 103 private lazy ..
[UIKit] CustomDatePicker 만들기 (1/3)
UIKit 공부겸 프로젝트를 진행하는 도중에 DatePicker를 커스텀해야 하는 상황과 마주했다. 📌 구현내용 일단 기본 제공되는 DatePicker를 사용할 수는 없었다 그래서 UIButton의 inputView에 pickerView를 넣어서 만들것이다 일반적으로 TextField의 inputView에 pickerView를 사용하던데 나는 TextField가 필요없어서 대장정을 걸어보기로 했다.. 📌 UI setting 위에 언급했던 CustomDatePicker에서 box 하나씩을 CustomPickerButton이라고 하겠다. // CustomPickerButton.swift public class CustomPickerButton: UIButton { private var uiView = UIV..
[Swift] 프로그래머스 숫자 짝꿍
처음 접근 방법 제한사항을 보면 X,Y의 길이가 꽤나 긴것처럼 보인다. 하지만 어차피 문자열 계산이기 때문에 길이가 7인 문자열이다. 그래서 7**7으로 계산을 했다.. /* 1. X를 기준으로 Y visited[길이 Y] 만들기 2. Y를 반복해서 돌며 같은 숫자가 나오면 visited 여부 확인하고 append 3. 갖고 있는 숫자 없으면 return "-1" 모두 0이면 return "0" 아니면 sort해서 문자열로 변경 */ 그리고 코드 import Foundation func solution(_ X:String, _ Y:String) -> String { var answer = [String]() var x = Array(X).map { String($0) } var y = Array(Y).m..
[SwiftUI] @State를 가지는 View의 업데이트
오늘은 @State에 대해서 조금 더 깊이 있게 알아보려고 해요! 일단 @State가 어떤 역할을 하는지 아는 것으로 간주하고 아주 간단한 예제를 볼게요, 모르면 이거 보고오기 https://990427.tistory.com/64 [SwiftUI] 데이터 바인딩 (1/5) @State 데이터바인딩 데이터 바인딩(data binding)은 제공자와 소비자로부터 데이터 원본을 결합시켜 이것들을 동기화하는 기법이다. 라고 위키백과가 말하는데, 쉽게말해 SwiftUI에서 데이터 바인딩은 view 990427.tistory.com 아래 코드는 changeItem 버튼을 눌러 text 값을 변경시키는 예제입니다 struct ContentView : View { @State var text = "default" va..
[Swift] .\self ? 키경로 톺아보기 (KeyPath)
forEach에서 자주 사용하는 .\self 무슨 의미일까 ? KeyPath 키 경로는 프로퍼티의 값을 바로 가져오지 않고 어떤 프로퍼티의 위치만 참조하도록 할 수 있다. 글로는 설명하기 어려운 개념인것 같다. 바로 예제를 보자 ! Swift는 함수형 프로그래밍 언어로 함수가 일급객체의 역할을 할 수 있다. 너무 유명한 예제..인데 이렇게 변수로 함수를 사용할 수 있고, 참조를 할당할 수 있습니다 ! func someFunction(paramA: Any, paramB: Any){ print("SomeFunction called...") } var functionReference = someFunction(paramA:paramB:) functionReference("A","B") // someFuncti..
[SwiftUI] NavigationLink의 isActive 공유 이슈 & 해결
앱을 만들다보면 List NavigationLink를 만들어서 해당 cell을 클릭하면 화면이 전환되는 코드를 작성해야 할 때가 있습니다. 아래는 NavigationLink List의 기본적인 코드 입니다. @State var list = ["A","B","C"] var body: some View { NavigationView{ List{ ForEach(list, id:\.self){ data in NavigationLink { Text("Page Name: \(data)") // .navigationBarBackButtonHidden(true) } label: { Text("Go \(data)") } } } } } 만약 전환된 페이지의 Back버튼을 없애고 커스텀 하고싶을 때는 어떻게 해야할까 ? 첫..
[SwiftUI] TabView 페이지 이동시 TabBar , NavigationBar Hidden 처리하기
일주일 삽질하고 작성하는 트러블슈팅 .. 우선 나는 TabView안에 NavigationView를 담아 페이지 이동을 하고 싶었다. FirstView -> SecondView struct ContentView: View { var body: some View { TabView { NavigationView { FirstView() } .tabItem { Text("first") } } } } struct FirstView: View { var body: some View { ZStack{ Color.yellow VStack{ Text("FirstView") NavigationLink { SecondView() } label: { Text("Go SecondView") } } } } } struct Sec..