iOS App Programming for Starter - Yagom
나중에 다시 챙겨보면 좋을 강의 목록 + my own summary
*** Receiving Value Changed Event from the Slider
https://www.youtube.com/watch?v=CJ-vIeg4eNU
//slider를 사용자가 움직일 때마다 여기에 어떤 값이 들어오게 된다.
//slide가 실행될 때 이 코드가 동작할 수 있게끔 조치를 취해줘야 한다.
오른쪽 Inspector 부분에서 슬라이더로 땡겨와서 코드랑 슬라이더를 연동시키는게 인상적이었다.
* Actions and Outlets
@IBOutlet - UI 요소들에서 버튼, 슬라이더 등 요소를 코드로 끌어올 때
@IBAction - 액션 연결 (무슨 반응 나타낼것인지 코드로)
*Event Driven Programming
어떤 특정 이벤트가 발생했을 때, 이러한 코드를 실행하겠다.
*Adding RESET Button
발생할 수 있는 에러 tip : unrecognized selector ~~ 오류가 뜨는 경우?
-> 함수 이름을 제대로 썼는지 의심해보자.
만약 이미 @IBAction 으로 selector와 연결시켜 놓았다면, 잘못 쓴 함수 이름에 오른쪽 마우스 클릭 -> Refactor -> Rename 으로 수정해야 Inspector 화면에서도 자동으로 정정됨 (관련된 모든 함수 이름 싹 정정해줌)
*Adding Labels
label : 읽기 전용 텍스트를 보여준다.
*Asset
types: app icon, color set, data set(sounds, docs, videos..), image set, launch set, sticker...
*Auto Layout
제약! (constraint) : 너는 여기서부터 얼마만큼 떨어져있으면 좋겠다.
서로 다른 화면 크기라할지라도 .. 어떤 화면이든 상관 없이 적용 유동적으로 움직임.
*Limitations of Storyboard
- 스토리보드에서 모든것을 해결하면 좋겠지만, 간혹 가다가 attribute 를 코드로만 수정 가능한 경우가 있다.
스토리보드로 100% UI 구현하는거는 불가.
이 예제에서는 컨트롤러 이미지 바꾸는 거.
- 예전버전에서는 Image Literal 쓰면 자동완성으로 이미지가 떴는데, 현 버전에서는 이거 안됨
Cmd + shift + L 치고 거기서 이미지 찾아서 넣어야 함.
*Functions
메서드 = 클래스 안에 들어있는 함수
*Variables & Constants
변수 = mutable 바뀔 수 O ex) var randomValue: Int = 0
상수 = 바뀔수 x ex) let hitValue: Int = 0
변수는 var 상수는 let으로 정의
[데이터타입 in Swift]
letters - "String"
Numbers - Int, Float, Double
이 외에도 더 있음
[범위 연산자]
폐쇄 연산자: A...B : A와 B를 포함
반폐쇄연산자: A..<B : B 미만
단방향범위연산자: A... / ...A / ..<A
[Updown Game 에서 리셋 버튼 눌렀을 때 초기화 되어야 되는 부분]
5 가지 : 최소값 / 최대값 / 슬라이더위치 / 사용자의카운트횟수 / 현재 선택값
***Changing Value to another type
이 강의 어렵다 .. ㅠ 코드 짜는게 생각보다 어려움.
float, string, int... 이용해서 슬라이더의 위치 조정.
코드 하나하나 뜯어보기
1)
// slider를 사용자가 움직일 때마다 여기에 어떤 값이 들어오게 된다.
// slide가 실행될 때 이 코드가 동작할 수 있게끔 조치를 취해줘야 한다.
@IBAction func sliderValueChanged(_ sender: UISlider) {
// 콘솔 창에 슬라이더를 움직일 때마다 소수점의 값으로 출력해줌
print(sender.value)
// 그런데 사용자 UI 화면에서는 이 소수점을 보여주는게 의미가 없고 정수로 보여줘야함, 그래서 Int 로 보정해주고 이 값을 밑에 코드에 넣어서 사용자 화면에 출력.
let integerValue: Int = Int(sender.value)
// 사용자 UI 화면에서 사용자가 어떤 숫자를 선택하는지 출력 (String 은 출력의 형태일 뿐임)
sliderValueLabel.text = String(integerValue)
}
2)
// 버튼을 눌렀을 때의 값을 알고 싶다.
@IBAction func touchUpHitButton(_ sender: UIButton) {
// 콘솔창에서 HIT버튼을 눌렀을 때 찍히는 값 = 소수점형태
print(slider.value)
// 사용자가 HIT으로 누른 값이랑 슬라이더value 의 형태가 일치하지 않으므로 보정해준다.
사용자가 누른 값 = 정수형태 , 슬라이더 값을 정수형태로 보정 (randomValue와 같은지 비교하기 위해서)
let hitValue: Int = Int(slider.value)
// 슬라이더 값 = 소수점 형태만 받게 되어있다. 그래서 정수형태로 된걸 소수점 형태로 변환
slider.value = Float(hitValue)
-> 이거 하고 실행시켜보면 HIT 누르는 순간 슬라이더 위치가 살짝씩 변해있는걸 볼 수 있다.
값을 비교하기 위해서 살짝씩 움직여서 정수로 가게함.
마지막 2줄 코드가 어렵다. 결국 float값으로 바꿔줬는데.. 슬라이더가 움직여서 가까운 정수값으로 바뀐다니.. ㅠ
*String Interpolation
"\(tryCount) / 5"
값 대신 문자열을 변수로 만들어 넣어줌.
== 비교 연산자
= 할당 연산자 (값을 대입)
<return> : 여기서 함수를 종료하겠다.
else if 로 다 엮어주면 굳이 return 쓸 필요가 없어진다.
왜냐하면 if 조건에서 조건에 맞지 않으면 자동으로 그다음 else if 로 넘어오는 것이기 때문에.
위 4개의 조건 중 1개가 실행되거나, 또는 4개 중 하나도 실행되지 않거나.
만약 4개 중 무조건 1개가 실행되게 하고 싶다면 마지막을 else로 한다.
alert : 경고창
흰 창 안에 들어있는 것을 action 이라고 한다. (경고창에서 '확인'버튼)
*UI 적 요소들 정리
Scene
View Controller
View
Human Interface Guidelines for iOS
Storyboard Segue : 화면 이동.
present: 화면에 띄운다
dismiss: 화면에서 사라지게 한다.
present 의 반댓말 = dismiss.
'iOS > iOS Swift 개발 일기' 카테고리의 다른 글
[Do it! 책] swift 로 iOS 앱 만들기 시작 day 1. (0) | 2022.05.01 |
---|---|
iOS swift 배경 custom 색상 HEX 코드로 바꾸기 (0) | 2022.04.29 |
iOS swift - Alamofire / unsplash.com (0) | 2022.04.29 |
iOS swift - 단축키 및 Xcode 꿀팁 (0) | 2022.04.28 |
iOS swift - searchBar에 포커싱(커서 갖다대면) 키보드 생성 (0) | 2022.04.28 |