Today I Learned 45

20210611 Egg Timer project -2

Challenge ) IBAction 하나를 만들어서 (hardnessSelected), 3개의 버튼과 연결하고, 버튼을 눌렀을 때 "Soft", "Medium", "Hard"가 출력되도록 할 것(버튼의 title) Challenge ) softTime = 5, mediumTime = 7, hardTime = 12로 상수 선언, 사용자가 누르는 버튼에 따라 각각에 알맞게 출력되도록 할 것 https://dmsitter.tistory.com/99 Swift 조건문 : If - Else & Switch Swift에서 조건문(If, Else, Switch)을 어떻게 사용하는지 정리한다. If / Else if / Else 신호등에 맞게 자동차가 출발해야할지, 또는 멈춰야 할지를 조건에 따라 선택하는 상황이라고..

Today I Learned 2021.06.12

20210610 Egg Timer project -1

Boss Challenge ) 어제 만들었던 Xylophone App을 수정해서, 버튼을 누를 때마다 opacity가 절반으로 줄어들도록 만들기 & "Start" 출력 0.2초 뒤에 opacity 다시 원래대로 돌아옴 & "End" 출력 1. opacity 설정 sender.alpha --> alpha == view's alpha value 0.0부터 1.0까지 설정 가능, 0.0은 완전 투명 & 1.0은 완전 불투명 2. DispatchQueue.main.asyncAfter(deadline: .now()) class DispatchQueue : DispatchObject --> DispatchQueue == 앱의 기본/백그라운드 스레드에서 작업실행을 직렬/동시에 관리하는 개체 asyncAfter (de..

Today I Learned 2021.06.11

20210609 Swift function & Apple Documentation with Xylophone app -2

function 코드블럭을 하나의 function 안에 넣어서, 해당 함수의 이름만 호출하면, 코드블럭 안의 코드들이 실행된다. - Create an Function (without input) func funcName () { //do stuff } - Create an Function (with input) : input == parameter funt funcName (parameterName: DataType) { //do something with input} ex) func greeting (whoToGreet: String) { print("Hello \(whoToGreet)") } - Call the Function funcName () funcName (parameterName: Argu..

Today I Learned 2021.06.10

20210604 Apple Documentation with Xylophone app -1

실로폰 어플을 만들면서, 어플을 만들 때 Apple Documentation의 도움을 받는 방법을 배울 것이다. 먼저, 각 버튼에 대한 IBAction을 만들어준다. --- Challenge ) 'C' button에 대한 IBAction을 만들고, 해당 버튼이 눌러질 때마다 "I got pressed"가 디버그 창에 출력되게 한다. -> print 문장을IBAction 코드블럭에 넣어주면 끝 ---- 이제 각 버튼마다 asset으로 제공된 사운드파일을 각각 적용시키고자 한다. 어떻게 적용시키는지 알아내기 위해 다음의 방법을 따를 것이다. 프로그래밍에서 문제가 생겼을 때 해결하기 어려운 경우, 아래의 방법을 사용하는 것이 도움이 된다. 1. 구글링 + + ex) Play sound Swift Stackov..

Today I Learned 2021.06.05

20210603 - StackView

StackView란, 말 그대로 view 여러 개를 함께 쌓는 것을 말한다. Top view, Middle view, Bottom view를 커맨드키를 눌러 다중 선택을 하고 상단 메뉴바에서 Editor - Embed in - Stack View를 선택해준다. UI element들을 view에 넣을 때와 마찬가지로, 하단에 있는 Embed In 버튼을 사용해도 좋다. Stack View 항목이 새로 생기고, 각각의 view들이 embed 된 것을 확인할 수 있다. 이 과정을 통해 Xcode에서 3개의 view들이 상대적으로 어떤 위치에 배열되는지 알게 된다. ---Challenge ) Stack View에 constraint를 부여해서, safe area에 들어가지 않도록 한다. -> Safe Area를..

Today I Learned 2021.06.04

20210602 - Auto Layout & Responsive UI -2

자동으로 레이아웃이 조절되도록 할건데 먼저, 방향이 바뀔 때 (세로->가로) UI element들의 위치를 .storyboard 파일의 어떤 element를 선택하고, 화면 우측 하단의 아이콘 중 가운데에 있는 'Add New Constraints'를 선택한다. 먼저 LaunchScreen.storyboard의 AppBreweryBackground를 조정할 것이다. 상하좌우 각각 화면의 끝인 0인 것을 확인하고, 숫자 옆에 있는 점선 부분을 클릭해서 빨간 실선으로 되게 했다. Constraints를 추가한 뒤 방향을 돌려서 확인해보면 이렇게 적용된 것을 확인할 수 있는데, 좌우에 공백이 생긴 부분은 Safe Area로, 홈버튼이 있는 영역과 배터리잔량, 네트워크 상태 등의 상태 표시줄이 있는 부분이다. ..

Today I Learned 2021.06.03

20210601 간단한 어플 만들기, Auto Layout & Responsive UI -1

오늘은 다른 도움을 받지 않고 skeleton project를 가져와서 직접 어플을 만들어본다. 이번에 만들어 볼 어플은 'magic 8 ball'이라는 이름의 간단한 선택을 도와주는 어플이다. 먼저, Main.storyboard에서 어플을 디자인한다. 조촐한.. UI를 만들고.... ViewController.swift 에서 imageView에 대한 IBOutlet과, button에 대한 IBAction을 만들어준다. IBAction을 만들 때는 항상 Connection, Type, Event를 확인한다. 제공된 asset에서 이미지파일 여러 가지를 배열에 넣어주고, 버튼을 누를 때마다 랜덤하게 이미지가 뜨도록 코드를 작성해주면 끝 어제까지 만들었던 어플을 그대로 디자인만 바꿔서 만든 셈이다. 다음 섹..

Today I Learned 2021.06.02

20210531 Swift - Constant, Range Operator & Randomisation

Constant 변수와는 다르게, 한 번 생성되면 값이 변경되지 않는다. let constantName = Value 로 설정한다. (여기에서 let은 var처럼 어떤 단어의 약어가 아니라, 사람이 읽기 편하도록 고안된 스위프트용 단어(?)이다.) 값을 변경하지 않아도 되는 상황이라면, var보다는 let을 사용하는 것이 효율적이다. var의 값은 언제든 어떤 값으로든 바뀔 수 있어야 하기 때문에 생성할 때 메모리 공간을 많이 잡아야 하기 때문이다. Range Operator ex) Int.random(in: 1 ... 5) -> ... : closed range operator, 뒤의 수인 5를 포함 (1 이상 5 이하) Int.random(in: 1.. ..< : open range op..

Today I Learned 2021.06.01

20210530 Swift - Variables & Arrays & code를 이용해 어플디자인 변경하기3

Swift Cheat Sheet을 보면서 Swift에서 사용하는 문법들을 한 눈에 확인할 수 있다. var myVariable = 42 -> 변수를 생성한다. var fruitName = [Apple, Banana, Orange] -> 배열을 생성하는 것도 마찬가지 방법을 사용한다. -> 만약, 배열의 특정 인덱스에 접근하고자 한다면 fruitName[x] 으로 호출할 수 있다. 여기서 x에는 인덱스의 값이 들어가며, 인덱스의 값은 0부터 시작해서 하나씩 증가한다. 예를 들어 Apple 을 사용하고자 한다면, fruitName[0]을 입력하면 된다. 변수를 생성한 이후에는, 자신이 지정한 변수명으로 해당 값에 접근할 수 있게 된다. 만들고 있던 주사위 어플에 랜덤요소 부여하기 지금까지 만들던 어플에서는,..

Today I Learned 2021.05.31

20210529 - code를 이용해 어플디자인 변경하기2

어제는 IBOutlet을 이용하여 코드를 통해 UI를 수정했다면, 오늘은 사용자가 'Dice Roll' 버튼을 눌렀을 때 실행되는 것들을 만들 것이다. IBOutlet을 만들었을 때와 마찬가지로, Ctrl 버튼을 누른 상태로 코드의 마지막 중괄호 앞부분으로 연결시켜주면, 버튼이기 때문에 연결 타입이 기본으로 'Action'으로 선택되어 있는 것을 확인할 수 있다. 만약 UI를 수정하고 싶다면 Connection 부분을 'Outlet'으로 변경해주면 되지만 지금 하고자 하는 것은 Action 옵션을 사용한다. Name 부분에 액션에 대한 설명을 적어준다. 그리고, 자동으로 선택되어 있겠지만 Event - 'Touch Up Inside'를 선택해준다. --> 사용자가 해당 버튼을 '눌렀다가 뗄 때' 실행된다..

Today I Learned 2021.05.30