분류 전체보기

    [UIKit] CustomDatePicker 만들기 (2/3)

    [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] 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] 프로그래머스 숫자 짝꿍

    [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의 업데이트

    [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)

    [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 공유 이슈 & 해결

    [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 처리하기

    [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..

    [Swift] 코테풀때 유용한 Input & Output 정리

    [Swift] 코테풀때 유용한 Input & Output 정리

    INPUT 가장 기본적인 형태 readLine()은 return value가 옵셔널이기 때문에 force unwrapping을 해줘야 사용할 수가 있습니다 ❗️ let str = readLine()! Array로 받기 공백을 두고 문자열을 받는 경우에는 split을 통해 분리하여 저장할 수 있습니다. 💡 주의할 점 : split()한 데이터는 String이 아닌 Substring입니다. (엄연히 다른 type이라 error나는 경우가 있으니 알아두면 좋습니당) let arrString = readLine()!.split(separator: " ") Int로 받기 📌 숫자 하나만 입력받는 경우 let num = Int(readLine()!)! 📌 공백으로 구분하여 여러개를 입력받는 경우 type은 Arra..

    [Swift] 백준 2941 : 크로아티아 알파벳

    [Swift] 백준 2941 : 크로아티아 알파벳

    풀이 아주 간단하게 생각했다. 크로아티아 알파벳을 문자 하나로 보기때문에 크로아티아 알파벳과 일치하는 문자열을 하나의 문자(*)로 바꾸고 count한다. 코드 import Foundation var s = readLine()! let croatia = ["c=","c-","dz=","d-","lj","nj","s=","z="] for i in croatia { s = s.replacingOccurrences(of: i, with: "_") } print(s.count) 문자열에서 of: 와 일치하는 문자열을 두 with: 으로 바꿉니다. 그리고 그 문자열을 return 합니다. 즉, 기존 문자열을 참조하지 않고 새로운 문자열을 생성합니다.

    디바이스 화면고정 portrait only

    디바이스 화면고정 portrait only

    앱을 만들때 가로화면을 고려하지 않기 위해 landscape 모드를 지원하지 않는 방법입니다. UIKit로 구현하는 경우 (Storyboard) AppDelegate.swift에 코드를 추가합니다. func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask { return UIInterfaceOrientationMask.portrait } SwiftUI로 구현하는 경우 디렉토리의 프로젝트를 누르고 TARGETS에 있는 프로젝트를 선택합니다. Info -> Supported interface orientations 여기서 지원하고자 하..