본문 바로가기

분류 전체보기

(51)
[SwiftUI] Image (1) SwiftUI에서 Image 사용법에 대해 알아보겠다. UIKit에서 쓰이던 UIImageView를 대체할 수 있는 녀석이다. 일단 에셋에 image 하나를 넣어주겠다. ( image이름 - "swiftui" ) 그리고 아래와 같이 body 안에 코드를 입력하면 끝이다. UIImageView에 UIImage를 넣어주고 하는 과정이 한줄의 코드로 가능한것이다. var body: some View { Image("swiftui") } 여기서 주의사항은 image는 기본적으로 image 본연의 사이즈를 유지한다는 점이다. 이게 무슨말이냐 하면 image 파일을 열어서 사이즈를 확인해보면 해당 image의 사이즈를 알 수 있는데 그사이즈를 유지하고 있다는 말이다. 이말은 곧 frame이라는 수식어를 사용해서 i..
[Swift_Grammar] 구조체와 클래스 구조체와 클래스는 프로퍼티와 메서드를 사용하여 하나의 새로운 사용자 정의 데이터 타입을 만들어 줄수 있다. 구조체를 먼저 보자면 struct 키워드를 사용하고 새로운 타입을 생성해주는것과 같으므로 대문자 카멜케이스로 이름을 지어준다. struct Person { let name: String var age: Int } 구조체를 정의하고 초기화 할때 아래와 같이 타입과 프로퍼티 이름을 그대로 받는 기본적으로 생성되는 init이 있다. ( 멤버 와이즈 이니셜라이저 ) 또한 점문법을 사용하여 프로퍼티에 접근할 수 있다. 하지만 구조체를 let 으로 생성한 후 프로퍼티에 값을 변경하려고 하면 상수이기 때문에 컴파일 에러가 난다. let kim = Person(name: "kim", age: 2) print(ki..
[Swift_Grammar] Optional 오늘은 Optional에 대해서 포스팅 하겠다. Optional은 값이 있을 수도, 없을 수도 있음을 나타내는 표현이다. ( 없는건 nil로 표현한다. ) 변수나 상수 등에 꼭 값이 있다는 것을 보장할 수 없으며 그 값이 nil 일 수도 있다는걸 의미한다. Int 타입 변수에 값이 0, 혹은 String 타입 변수에 값이 "" (빈 문자열) 이라고 가정할때 이 상황에서 해당 변수들의 값은 없는게 아니다. 단지 0이라는 값이 들어간, 빈 문자열 이라는 값이 들어간 변수 또는 상수인것이다. 그러니 nil 이라는 값과 혼동을 해서는 안된다. let value1 = 0 let value2 = "" nil은 Optional 타입에만 할당을 할 수 있다. 일반 타입에 nil을 할당 하고자 한다면 컴파일 에러가 발생..
[SwiftUI] Text 이번 포스팅에는 SwiftUI에서 사용되는 Text에 대해서 알아보겠다. UILabel 보다 사용성이 훨씬 크고 UILabel 과 일맥상통 하다고 말하면 뭔가 이해하기 쉬울까 그전에 우리가 익숙해 있었던 UIKit와 SwiftUI 요소들의 비교를 몇개 먼저 해보자면 아래와 같다. Views and Control UILabel Text UITextField TextField UITextField의 Secure 설정 SecureField ( TF의 속성을 설정하는게 아닌 새로운 TF 생성 ) UIButton Button UIImageView Image UISwitch Toggle UISlider Slider UIStepper ( 이런게 있었네요,, ) Stepper UIPickerView Picker(Whe..
[Swift_Grammar] 함수 오늘은 함수에 대해서 간단히 알아보겠다. 함수라는건 기능을 만드는 것. 그리고 함수 하나에는 하나의 기능을 만드는 코드가 들어가야 가장 베스트이다. 기본적으로 func라는 키워드와 함수의 이름, 매개변수(Parameter), 반환타입(Return type) 등을 사용하여 함수를 정의한다. 매개변수는 소괄호로 감싸주며, ->를 사용한후 반환 타입을 명시해준다. 또한 함수 내부의 코드가 한줄인 동시에 그 결괏값이 반환타입과 일치한다면 return 키워드는 생략이 가능하다. func sayHEllo() -> String { return "Hello" } // "Hello" func sayHEllo() -> String { "Hello" } // "Hello" 이번에는 매개변수를 받는 함수를 보겠다. 두개의 I..
[SwiftUI] Hello SwiftUI SwiftUI에 대해서 공부를 시작하려고 한다. "스윗한 SwiftUI" 라는 책을 베이스로 공부하되 추가적으로 필요한 부분이 있을시 검색을 해나가면서 진행하는 방향으로 공부할 생각이다. 일단 첫 시작이니 프로젝트 생성부터 하겠다. App을 선택하고 Interface를 SwifttUI로 선택한다. 그러면 평소 기본으로 위치해있던 ViewController가 아닌 ContentView라는 이름의 swift 파일이 있을것이다. SwiftUI에서는 ViewController를 사용하지 않는다. 대신 "View 프로토콜을 준수하는 구조체를 사용해서 body라는 프로퍼티에 UI를 구성하는 코드를 작성" 하여 구현 한다고 한다. 일단 ContentView에 기본으로 작성된 코드를 보면 "Hello, world!"라..
[Swift_Grammar] 흐름 제어 (2) 흐름제어의 첫번째 조건문 포스팅에 이어서 이번에는 반복문에 대해서 포스팅 하겠다. 그전에 크리스마스 인사 한번 밖고 시작하겠다. (문득 이 블로그를 보는 사람들이 있을지 의문이 든다.) for - in 먼저 for - in 구문을 보자면 기본 틀은 아래와 같다. let elements = ["1", "2", "3", "4"] for element in elements { print(element) } elements라는 Int 배열 타입의 아이템을 반복문을 돌려서 배열의 첫 요소부터 끝까지 차례대로 처리를 해줄수 있다. 혹은 배열이 아닌 원하는 범위를 설정하여 idx를 가지고 처리를 해줄수도 있다. for idx in 0...10 { print(idx) } 또는 idx나 순회를 돌 배열의 아이템에는 전혀..
[IOS] 키보드 내리기 with TextField SearchBar나 TextField에서 터치 입력이 발생하면 키보드가 올라온다. 이번 포스팅에서는 키보드가 올라온 후에 키보드가 아닌 다른 영역을 터치 해서 키보드를 내리거나 혹은 키보드위에 ToolBar를 올리고 키보드를 내리는 BarButton을 하나 생성하여 BarButton에 Action을 넣은후 진행하는 방법에 대해 얘기해보겠다. 일단 center에 TextField를 하나 생성하겠다. 먼저 아래와 같은 코드를 작성해주자. override func touchesBegan(_ touches: Set, with event: UIEvent?){ self.view.endEditing(true) } 이 touchesBegan 메소드의 대해 알아보자. View 또는 Window에서 하나 이상의 새로운 터..
[Swift_Grammar] 흐름 제어 (1) 코드를 실행해야 하거나 실행하지 말아야 하는 상황, 혹은 특정 명령어를 반복해서 실행해야 할때 조건문과 반복문 즉 흐름 제어를 하게 된다. 조건문은 if문 과 switch문, guard문 이 있다. if 먼저 if문은 if, else 등의 키워드로 사용할 수 있고 else if는 몇개를 사용해도 상관 없으며 else 블록은 생략해도 무방하다. 먼저 오는 조건중 어느 하나라도 충족이 되었다면 다음 조건들의 코드들은 무시한다. 또한 조건의 값은 Bool 타입이어야 한다. let lhs = 5 let rhs = 6 if lhs rhs { print("lhs의 값이 더 크다") } let value = false if value ..
[IOS] UserInterfaceStyle 21.01.04 다크모드 대응 (하단 참고) - [ 수정 ] devddong.tistory.com/27?category=828276 오랜만에 개인 프로젝트 앱에 접속해 확인하던중 ( 사실 앱스토어 업로드 습작이라 기능이 볼것도 없음 ㅎ ) 유도하지 않게 다크모드에 적용된 부분을 발견했다. SearchBar와 superView의 색상이 바로 해당 부분이다. 그래서 오늘은 이부분을 수정하는 과정을 포스팅 하려한다. 아주 간단하게 해결이 가능한데 AppDelegate의 didFinishLaunchingWithOptions 메소드 내부에 아래와 같이 UserInterfaceStyle을 설정 하는 코드를 추가해준다. func application(_ application: UIApplication, didFini..