오일러각과 쿼터니언
백준 10845 C# 시간초과
완전 탐색
쓰면 안되는 이유
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
정렬 정리하려다가 터짐
retr0의 유니티 게임 프로그래밍 에센스 스터디
retr0의 유니티 게임 프로그래밍 에센스 스터디
유니티 UGUI
자리표시자
string.IsNullOrEmpty(s);
Int32.Parse(), Convert.ToInt32(), Int32.TryParse()
string.ToCharArray(), Array.Reverse(char[])
ConsoleKeyInfo
default 키워드
튜플
해시
OrderBy
LateUpdate
이렇게 처리해두면 작성한 함수에 마우스 오버를 하면 설명이 뜨게 된다.
유니티의 좌표계는 4 by 4 matrix로 이루어져 있다.위의 코드를 작성하면 행렬계산이 두 번 이루어진다.아래의 코드를 실행하면 한 번에 회전과 이동을 계산할 수 있다.
조건문, foreach, enum case, for 반복문, unwrap 옵셔널변수, 클래스 vs 스트럭트, 프로퍼티 옵저버, 함수 매개변수 이름, 제네릭, 클로저
readLine() Optional(String)으로 저장 엔터가 입력되면 끝(EOF), EOF는 포함되지 않고 직전까지만 저장 let input = readLine() type(of : input) : Optional(String) let output = inpu
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift DFS
한빛미디어
swift 스터디
swift 스터디
swift 스터디
struct도 메소드를 멤버로 가질 수 있다.
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
for (index, 아이템이름) in 배열이름.enumerated(){ code }
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
ios 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
Xcode 단축키
iOS 스터디
UIKit
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
iOS 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
swift 스터디
iOS AutoLayout 실습
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
iOS 스터디
ViewWillAppear, Notification
테이블 뷰 추가 및 데이터소스 연결
Local Notification
typecasting, segueway를 통한 데이터 전달
테이블뷰와 Label의 Attribute Option
CoreData 데이터 읽고 쓰기
navigation controller, notification(modal)
delegate, alert, present
alert, DataSource
UIActivityViewController, presentation
notification, keyboardWillAppear, keyboardWillHide, inset, firstResponder
Dark Mode, Color Set
Popover, Size Class
widget extension
cocoapods
MVVM
앱 실행 순서 main() OS가 앱을 실행할 때 처음으로 실행됨. 진입점 함수(Entry Point Function) 라고 함 AppDelegate 파일에 @main 부분으로 자동으로 main 함수가 만들어짐. Objective-C 파일에는 main 함수가 있음
App-based life-cycle
Scene은 iOS 13부터 도입됨 이전에는 한 화면에 한 화면만 표시 가능 Multitasking Split view 앱 실행 시 상단에 점 3개를 누르면 멀티태스킹 가능 동일한 앱을 한 화면에 동시에 띄우는 경우 앱 자체는 하나만 실행된 것임. 앱이 제공하는 화
AppDelegate func applicationWillTerminate(_ application: UIApplication)에서 저장을 하거나 리소스를 정리하는 것은 권장되지 않으므로 해당 메소드를 구현하는 경우는 거의 없다. application(_:didFini
앱 초기화 중 잠시 표시되는 화면앱이 실행되었다는 시각적 표시를 위한 화면SplashView라고 부르기도 함보통 정적인 조합으로 구성(ex: imageView, label, color)커스텀 클래스 설정 불가터치 이벤트 처리 불가outlet, action 연결 불가런치
Screen To View
테이블뷰, 버튼, 이미지 뷰 등을 추가해서 화면을 구성하는 뷰 컨트롤러하나의 화면을 구성하는 뷰 컨트롤러하나 이상의 뷰 컨트롤러를 차일드로 추가해서 관리차일드 뷰 간의 화면 전환을 처리네비게이션, 탭바, 스플릿 뷰 컨트롤러 등서브클래싱 한 다음 필요한 기능을 추가하는
rootView가 메모리에 로드된 후 호출LifeCycle중 딱 한 번만 호출초기화가 필요한 부분(딱 한 번만 실행해야 하는 것)은 여기서 구현rootView가 계층에 추가되기 직전 호출화면이 표시되기 전에 최신 데이터를 리로드 하고자 하면 여기서 구현rootView가
Modal 에서의 vc Life Cycle
UIView
Apple 공식문서 공통적으로 view.으로 접근 ✅대부분의 속성은 subView에도 영향을 준다. isHidden 체크 시 안보이게 됨 코드에서는 outlet으로 view를 연결 후, .isHidden 속성으로 접근하면 된다.Bool alpha 0~1 의 값으로 1이면 완전히 보이고 0으로 갈수록 투명해진다. 코드에서는 outlet으로 view를 연결...
하나의 서브뷰는 동시에 여러개의 슈퍼뷰를 가질 수 없다. (하나의 계층에만 속할 수 있다.)아웃렛을 연결하지 않은 상태에서 계층에 표시되는 이름을 설정할 수 있다.늦게 추가된 서브뷰는 계층에서는 가장 뒤쪽에 있으며, 화면에서의 표시는 가장 앞에 배치된다.Editor-A
storyboard 이전에 쓰이던 파일nib file, 닙 파일이라고 읽는다.xib 파일이 같이 생성되는데, 계층구조에서 뷰 컨트롤러가 없다.이 파일 자체가 뷰 컨트롤러고, 다른 뷰 컨트롤러를 추가할 수 없다.파일 안에서 하나의 화면만 구현할 수 있다.하위 호환성이 높
segue
코드로 segue 실행하기
Segue를 활용해서 이전화면으로 돌아가는 방법
UIStoryboardSegue
AutoLayout 개요
For Prototyping
Constraints
Update Frame, Align, Pin, Resolve, Embed In
제약에 문제가 있는 경우 해당하는 씬 옆에 화살표가 표시된다.여기서는 에러가 아닌 경고이기 때문에 노란색 화살표로 표시된다.화살표를 누를 경우 에러목록으로 이동한다.뷰의 현재 위치가 최종 위치와 다를 경우 해당 항목에 표시된다.항목을 누를 경우 에러가 발생한 뷰를 강조
제약 공식
Location
자주 사용하는 패턴
Fixed Size, Aspect Ratio
Align
Priority
baseline 폰트와 관련있다. 따라서 레이블 배치에 관련있으며, 이미지나 스위치 같은 다른뷰 정렬에는 의미가 없다. 이 라인을 baseline 이라고 한다. bottom, horizontal spacing 시 프레임을 기준으로 정렬이 된다. 폰트의 크기에 따라 여백이 달라진다. 따라서, 텍스트의 위치는 정렬되지 않아 가독성이 떨어진다. 레
item1.attribute1 = multiplier x item2.attribute2 + constantconstant는 런타임에 동적으로 업데이트되는 방식으로 구현 가능하다.제약의 종류에 따라서 constant가 영향을 주는 부분이 달라진다.위치, 여백에서의 con
first item & second item
Intrinsic Size
CH, CR
동적인 배치에 유리한 Stack View
Layout Guide
Adaptive Layout, Size Class, Trait Collection
개발 패턴
대상이 가지고 있는 특징, 즉 인터페이스의 특징
여러 환경을 지원하도록 에셋을 구성하는 방법
UITableViewCell
UITableViewDataSource
재사용큐
TableViewDelegate
titleForHeaderInSection, titleForFooterInSection
TextField
returnKey 옵션, textFieldShouldEndEditing, textFieldShouldReturn
shouldChangeCharactersIn
Navigation Controller Embed
강제 추출
강제 추출, 옵셔널
Upcasting 자식 클래스의 객체를 부모 클래스의 객체에 담는 것 Downcasting 업캐스팅되었던 객체를 다시 본인의 클래스로 되돌리는 것. 부모 클래스 객체를 자식 클래스의 객체를 담는 것이 아니다. 이는 불가능하다. 명시적 타입캐스팅을 사용 사용 의의 다형성 여러 자식 클래스의 객체를 하나로 묶어 관리하기 편하다
segue
커플링, 프로토콜, 델리게이트 패턴 구현
Notification, LocalNotification, RemoteNotification 중 첫번째
Date 구조체
자주 쓸 유틸을 extension으로 구현
cmd c cmd v
String(describing: 클래스이름.self)
layer.cornerRadius
CollectionView, CaseIterable, Compositional Layout(NSCollectionView)
Storyboard Date Picker
이런 식으로 sender가 Any가 아닌 뷰의 타입으로 설정해주면 타입 캐스팅 없이 메소드 안에서 해당 뷰 객체로 직접 접근이 가능하다.
다른 뷰에 대해 제약 추가
컬러피커
tableViewCell, CollectionViewCell
reloadData()
생일같은거 처리
API 목록
URL 구조
URLSession 기본 패턴
JSON Parsing, Date Formatting
URL Request
DispatchQueue.main.async
header
webkit https http
HTTP Method, HTTP Body, Content-Type
프레임워크 소개
CLLocationManager, 설정 앱 바로 열기(URL), 권한 요청하기
지도에 원하는 위치를 표시하는 방법
위치를 시뮬레이션 하는 방법
사용자에게 정확한 위치를 요구하는 방법
Location Manager가 제공하는 멤버로 위치 서비스를 커스터마이징하기
좌표와 주소를 상호 변환하는 방법
메모리의 기본적인 구조와 저장 방식
문자를 메모리에 저장하는 방식
값 형식과 참조 형식의 차이
Swift에서 메모리를 관리하는 방법
강한 참조 사이클이 발생하는 이유와 해결법
Closure와 뷰 컨트롤러 사이에 강한 참조 사이클이 발생하는 이유와 해결 방법
설정에 관계없이 다크, 라이트 모드 설정하는 방법
Global Tint
TimeZone
타임존 포맷팅
sectionIndexTitles & sectionForSectionIndexTitle
코드로 서치바 추가(네비게이션)
navigation bar button item
tableview cell reordering
스크롤 가능한 하단에서 끌어올려 볼 수 있는 뷰
FlowLayout으로 Grid UI 구현하기
첫번째로 연결된 탭바 아이템에 대응하는 뷰컨트롤러에서 탭바의 배경이 제대로 보이지만, 2, 3번째부터는 보이지 않고 투명하게 설정되는 현상이 되었다.
Property Injection, Initializer Injection, Interface Injection
Segue Action
옵셔널한 생성자
collectionView에서 아이템, 그룹, 섹션 배치법
숫자를 출력할 때 포맷팅하는 방법
paging 과 continuous
cell 클래스 생성 후 상속
스크롤에 따라 뷰의 가시성을 조절하는 뷰를 만드는 방법을 설명한다
GeoJSON을 추가, 파싱, 지도에 마커 추가 방법을 알아본다.
메뉴 표시
지도 위에 직선이나 도형을 그리는 기능
어노테이션을 선택했을 때 두 지점을 잇는 경로 표시
route.polyline.boundingMapRect
formatter로 시간, 초만 표시하도록 포맷팅하기
CLLocationDistance를 m단위로 포맷팅
1. StackView를 outlet 연결한다. 2. setCustomSpacing 메소드를 호출한다. 첫번째 파라미터: 여백의 크기 두번째 파라미터: 어떤 뷰의 뒤에 줄 것인지 어떤 뷰를 전달.
MKRoute의 세부 경로
1. IndexSet 생성 2. IndexSet에 현재 선택한 index 추가 3. 해당 IndexSet 으로 tableView reload 4. scrollToRow로 현재 indexPath를 .top으로
tag
Concurrency Programming Overview
Main Thread와 Background Thread를 사용하는 가장 기본적인 패턴 맛보기(백그라운드에서 코드 실행 후 메인에서 UI업데이트)
Operation 구현, 실행, 취소
Operation 사이에 의존성을 추가해서 원하는 순서로 작업 실행하는 방법. 이미지 크기 조정하기. 이미지 필터 적용하기. Compositional Layout
Runtime Error Handling
코드의 실행을 Scope 종료 시점으로 연기시키는 방법
Grand Central Dispatch, Dispatch Queue, Work Item, Serial&Concurrent Queue, Global&Main Queue, async&sync&asyncAfter
작업을 취소하는 방법과 여러 작업을 그룹으로 묶는 방법(DispatchWorkItem, DispatchGroup)
GCD를 이용하여 이미지를 다운로드 -> 필터 적용 -> 리로드
경합 상황에서 동기화 방법으로 문제 해결하기, Serial Queue, Mutex, Semaphore
파일 저장 처리 관련