- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- 시각화
- trunc
- Observable
- substr
- Upper
- delegate
- tapply
- swiftUI
- struct
- 명령어
- Linux
- SQL
- Python
- ReLU
- decode
- grep
- MVC
- 딥러닝
- r
- barplot
- ios
- 연산자
- rxswift
- deeplearning
- NVL
- scheduledTimer
- cocoapods
- Optional
- SWIFT
- sigmoid
목록ios (33)
iOS 개발 기록 블로그
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/UL7PX/btrENH7IMHa/dtJZSEYPGkEhXVwalozwsK/img.png)
생성 스토리보드에서 + 버튼을 눌러 Text Field를 생성하면 된다. 해당 UI를 클릭하면 오른쪽에 속성 인스펙터 창에서 위와 같이 볼 수 있다. Placeholder는 희미하게 보이는 회색 글자이다. Text Input Traits의 Capitalization 속성을 Words로 해주면 단어의 첫 글자가 대문자로 자동 입력된다. 마지막에 Return Key 속성은 키보드의 엔터키를 말한다. ViewController 스크립트에서 UITextField를 컨트롤+드래그앤드롭으로 IBOutlet을 생성하고 오른쪽에 돋보기 버튼을 같은 방법으로 IBAction을 만들어준다. 그리고 실행하면 직접 입력한 텍스트가 출력이 잘 된다. 그러나 다시 지우고 다른 단어를 입력한 뒤 출력해보면 동작하지 않는다. 이걸 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bUVR9D/btrEjiHQrid/mj9AwsD0EgOLO5KySdY8K0/img.png)
배경 이미지를 다크 모드에 따라 변경 낮에 적용할 이미지와 밤에 적용할 이미지 파일을 갖고 있다. 위 방법처럼 Color Set을 만들 필요는 없고 vector images와 PDF Image를 사용하여 해결할 수 있다. 아래와 같이 Assets.xcassets 파일에 background의 이미지 폴더로 간다. 이미지 파일을 열어서 확대해보면 아래와 같이 픽셀이 보인다. vector 이미지로 만들면 위와 같이 계단처럼 보이는 걸 없앨 수 있다. Assets.xcassets 파일에 기존의 이미지를 지운다. pdf 파일을 올리고 우측에 ‘Preserve Vector Data’라는 체크박스를 체크한다. 그리고 아래에 Scale을 Single로 바꾼다. Appearance를 Any, Light, Dark로 변경..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/DMQS5/btrDhd78ySh/w1FxrFNKGwUO4DbyrLOFqk/img.png)
Optional을 이해하기 위한 5가지 단계 Force Unwrapping Check for nil value Optional Binding Nil Coalsecing Operator Optional Chaining OptionalsDemo라는새로운 프로젝트 생성 let myOptional: String? myOptional = "CrazyDeer" let text: String = myOptional 위와 같은 코드에서 세번째 줄이 에러가 나온다. text 변수는 String이지만 myOptional이라는 데이터 타입이 String?이기 때문이다. 이 Optional 데이터를 사용하기 위한 방법 5가지인 것이다. 간단한 방법이 이것이다. Force Unwrapping 변수 뒤에 ! 느낌표를 붙여주는 방..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cuBKld/btrC8l6jYjN/MgOLxDZejj4NcHShxtSHf0/img.png)
Struct vs Class struct는 properties 값을 주지 않아도 된다. 그러나 class는 init을 해줘야 한다. 코드 class Enemy { // properties var health: Int var damage: Int init(health: Int, damage: Int) { self.health= health self.damage= damage } // functions (methods) func move() { print("Walk forwards.") } func attack() { print("Land a hit, does \(damage)damage.") } } 이렇게 init을 해주면 된다. 그럼 Enemy 클래스에 takeDamage라는 함수를 만들어보자. clas..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dd0Bag/btrC2K75hZ4/axVcQU7AGrnM7KJMqU6jbK/img.png)
이번 글에서는 Swift 뿐만 아니라 다른 언어에서 너무나도 중요한 개념인 'Class'에 대해서 알아볼 것이다. 개념 Class는 아래 링크에서 알아봤던 Struct (Structure, 구조체)와 비슷하고 프로그래밍이 오랜 기간 성장해오면서 발달, 도태, 변화해온 결과물 중 하나이다. iOS(Swift) 구조체(struct) 사용 방법 Swift에서도 역시 구조체(struct)가 있고 그 사용 방법에 대해 알아보자. 개념 스위프트에서 데이터 타입은 Int, Float, String, Boolean, Array, Dictionary 등 여러 가지가 존재한다. 우리는 직접 개인화(커스터 crazydeer.tistory.com 구조체는 Property나 Method들이 담겨 있는 설계도면과 같다고 설명했다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/beAtt3/btrCZS4QRUf/V5OYxKKWmH8YH0PLenTqkK/img.gif)
Slider 사용자에게 수치를 받기 위한 UI인 Slider에 대해 알아보자. 위와 같이 생긴 걸 슬라이더(Slider)라고 한다. 초기 값을 Value라는 속성으로 설정할 수 있고 이어서 최솟값, 최댓값을 설정할 수 있다. 나머지 값들은 추후에 필요 시 알아보는 걸로 하자. 스토리보드에 슬라이더를 Control 키를 누른 채로 드래그 앤 드롭하면 위와 같은 이미지가 나온다. Type을 UISlider로 변경하고 만들어 준다. 여기서 Event를 보면 'Value Changed'라고 이미 되어 있다. 게임 엔진인 유니티와 비슷한데 사용자가 슬라이더를 움직이는 순간 값이 변화하고 그때마다 이벤트로 전달된다는 의미로 보면 된다. 값이 변화할 때마다 콘솔창에 값이 출력되게 해 보자. 여기서 값은 소수점 2자리..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/KtYh0/btrCOLx14Yu/QdKYuTliFYthpzQPuuAVdK/img.png)
지난 글에서 디자인 패턴 MVC에 대해서 개념과 장점 등을 알아봤다. iOS(Swift) Design Pattern: MVC (Model View Controller) 1편 iOS App 프로그래밍에서 정말 정말 중요한 디자인 패턴 MVC를 알아보자. 우선 이 MVC나 MVVM 등 애플이 채택(?)한 디자인 패턴은 대부분의 채용에 필수요건으로 포함되어 있다. 그만큼 이것은 정말 중 crazydeer.tistory.com 이 MVC 패턴을 실제 프로젝트에 적용해보겠다. 적용 간단한 문제 풀이하는 앱을 MVC 패턴으로 바꿔보겠다. 우선 아래와 같이 Model, View, Controller 폴더를 만들어주고 파일을 옮긴다. 그동안 ViewController.swift 파일에서 전부 다 적었던 코드를 디자인 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/btKT38/btrCFO2eb6I/RnXMiQRgROKNXKiVG7hcBK/img.png)
iOS App 프로그래밍에서 정말 정말 중요한 디자인 패턴 MVC를 알아보자. 우선 이 MVC나 MVVM 등 애플이 채택(?)한 디자인 패턴은 대부분의 채용에 필수요건으로 포함되어 있다. 그만큼 이것은 정말 중요한 개념이라는 것이다. 디자인 패턴 디자인 패턴이란 프로그래밍에서 흔한 문제들의 증명된 솔루션이라고 볼 수 있다. 말이 어려운데 지금부터 자세히 파헤쳐보겠다. 소프트웨어는 일반적으로 복잡하다. 다음 글(2편)에서 이 디자인 패턴을 적용할 Quizzler라는 프로젝트에 대해 간단히 설명하자면 여러 퀴즈를 내고 사용자가 진실 혹은 거짓을 선택하는 단순한 문제 풀이 앱이다. 지금까지와 마찬가지로 ViewController라는 파일 내에서 퀴즈 데이터, 퀴즈 로직, UI 요소 등 모두 다뤘다. 하지만 퀴..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cVMt3l/btrCBMXAVhA/grVlkBXsIrei4uv0GMjg20/img.png)
Swift에서도 역시 구조체(struct)가 있고 그 사용 방법에 대해 알아보자. 개념 스위프트에서 데이터 타입은 Int, Float, String, Boolean, Array, Dictionary 등 여러 가지가 존재한다. 우리는 직접 개인화(커스터마이징)한 데이터 구조체를 만들 수 있다. 그걸 구조체, structure, struct, class(?)라고 부른다. 코드 먼저 예시 코드를 보자. // custom data type struct Town { // Properties let name = "CdeerLand" var citizens = ["Cdeer", "SunnyAn"] var resources= ["Grain": 100, "Ore": 42, "Wool": 75] // Method func..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c1e1qc/btrCyXMe61q/MzBLs01xA40jR8Zz4r46ik/img.png)
Progress Bar는 아래 링크에 달걀 삶는 프로젝트에서 시간이 시각적으로 얼마나 남았는지 보여줄 수 있는 UI 요소 중에 하나이다. https://crazydeer.tistory.com/entry/iOSSwift-Timer-Code-타이머-코드-개요-이슈-해결-추가 iOS(Swift) Timer Code (타이머 코드 개요, 이슈, 해결, 추가) Swift에서 타이머를 생성하는 방법이다. 우선 다들 이러한 기능이 필요하면 하는 거 있잖아요. 구글링 합니다. 바로 위에 들어가면 코드가 딱 나온다. 그거 들어가서 아래로 내리면서 가장 투표 crazydeer.tistory.com 생성 방법 우선 Main.storyboard에서 우상단에 + 버튼을 클릭하여 Progress View를 드래그 앤 드롭하여 생..