iOS 기초 8

iOS 디렉토리 구조

iOS 디렉토리 구조 iOS는 Sandbox구조로 Sandbox 내부만 접근 가능 Bundle Container 앱의 Bundle파일을 보유(.app) info.plist, 각종 리소스(strings..)파일 보유 iCloud 백업x Data Container Documents 영구저장소 처럼 사용할 수 있고 iCloud백업 시 자동으로 백업 보통 사용자가 앱을 사용하면서 필요한 내용을 저장하거나 생성한 데이터를 저장 iCloud 백업o Library 사용자가 선별적으로 데이터를 저장 Library/Caches에 이미지 저장 가능 iCloud 백업o Temp 앱이 실행될때 일회성으로 소비되는 리소스 저장 iCloud 백업x iCloud Container iCloud 스토리지

iOS 기초 2022.01.18

Frame, Bounds

Frame superview의 좌표시스템에서 위치와 사이즈를 나타낸다. superview기준에서 측정한 좌표 size는 view를 감싼 사각형의 영역(ex 회전하면 변경 가능) 하위뷰가 여러개 있으면 상위뷰의 좌표를 변경하면 하위뷰도 같이 이동 Bounds 자신의 좌표시스템에서의 위치와 크기 자신의 좌표계를 기준으로 삼음(초기 origin은 (0, 0)) size는 view자체의 영역(회전해도 크기는 그대로) view의 origin을 변경하면 해당 view의 viewport가 이동하여 자기자신은 가만히 있고 subView들이 반대로 이동해 보인다. ScrollView는 bounds를 변경하여 동작 언제 Frame을 쓰고 언제 Bounds를 쓰는가? Frame : 해당 객체를 상위뷰를 기준으로 배치해야 할..

iOS 기초 2021.12.13

iOS 화면전환

​화면전환의 방식 1. ViewController의 View위에 다른 View를 가져와 바꾸기 2. Navigation Controller사용(push, pop) 3. ViewContoller에서 다른 ViewController호출(present, dismiss) 4. segue를 사용해서 화면전환 ​ NavigationController 구조 Navigation Controller의 주요 역할은 컨텐츠 뷰 컨트롤러를 보여주고, 사용자 정의뷰(네비게이션 바 또는 툴바) 두 가지를 보여주는 것이다. 네비게이션 바는 뒤로가기 버튼과 커스터마이징 버튼을 추가 가능하고 툴바 뷰도 제공한다. Navigation Controller 사용(story board에서 적용) 1. Editor의 Embed In의 Navi..

iOS 기초 2021.12.10

AppDelegate, SceneDelegate

AppDelegate​ # ios12 버전 이전 ios프로젝트를 생성하면 AppDelegate.swift파일 자동적으로 생성 AppDelegate는 이름 그대로 앱과 시스템을 연결하기 위해 필요한 Delegate메소드를 포함하고있다.(UIApplicationDelegate) AppDelegate클래스에는 @UIApplicationMain어노테이션 기재되어있다. (이를 통해 앱은 시스템과 연결하기 위한 파일로 인식) # ios13 버전 이후(AppDelegate의 UILifeCycle역할을 SceneDelegate가 수행) 13버전 이후 AppDelegate의 역할 13이후 Scene Session를 관리하는 Session LifeCycle역할이 추가 앱의 가장 중요한 데이터 구조를 초기화 LaunchSc..

iOS 기초 2021.12.10

init(frame:), required init?(coder: NSCoder), awakeFromNIb()

init(frame:) Interface Builder에서 적용하지 않고, 코드로 직접 UIView를 상속받은 클래스를 만들 때 사용 required init?(coder: NSCoder) init(frame:)과 마찬가지로 UIView를 상속받은 클래스를 만들 때 구현해줘야 한다. 언제 사용될까? 스토리보드나 Xib파일에서 리소스를 가져와야 할 때 Cell을 xib로 구성 하였을때와 같이 스토리보드나 Xib파일을 이용해 UI를 구성하는 것이 가능하다. 이 부분은 NSCoding에서 해답을 얻을 수 있다. 인터페이스 파일은 UI 구성을 xml형태로 저장하고 있는데 이 저장한 형태를 사용자의 화면으로 그대로 가져오기 위해선 이 파일에 대한 구조를 가져오는것이 필요한데 이것이 deserialization이라..

iOS 기초 2021.12.07

Nib, Xib

Nib(Next Interface Builder) 화면을 구성하는 클래스들을 바이너리 형태의 압축파일들로 저장하고있는 형태 Xib(Xml Interface Builder) Xml형태로 존재(Nib파일을 컴파일 -> Xml파일) Xcode에선 인터페이스 빌더에서 직접 View를 구성할 수 있도록 제공하고 있다.(storyboard) Xml형태로 코드로 수정도 가능 코드형태기 때문에 SCM에 좀 더 용이하다. Xib가 플랫파일 에 저장된다는 부분을 제외하고는 기능적으로 Nib과 동일 (플랫 파일이란? 아무런 구조적 상호적 관계가 없는 레코드들이 들어있는 파일) 빌드를 하면 xib가 앱에 포함될 nib파일로 컴파일 된다. init(nibName: bundle:) xib로 작성된 Cell을 컴파일하여 bundl..

iOS 기초 2021.12.07

App LifeCycle

App LifeCycle ios12이전의 App LifeCycle 1. main 함수가 실행 2. main 함수는 UIApplicationMain함수를 호출 3. UIApplicationMain함수는 앱의 본체에 해당하는 객체인 UIApplication 객체를 생성한다. 4. nib파일을 사용하는 경우나, Info.plist 파일을 읽어들여 파일에 기록된 정보를 참고하여 그외에 필요한 데이터 를 로드한다. 5. App Delegate 객체를 만들고 앱 객체와 연결하고 런루프를 만드는 등 실행에 필요한 준비를 한다. 6. 실행 완료를 앞두고 앱 객체가 앱 델리게이트에게 application:didFinishLaunchingWithOptions: 메시지를 보낸다. 7. Main run Loop 실행하고 이벤..

iOS 기초 2021.12.07

ViewController LifeCycle

loadView() 뷰를 실제로 생성하여 메모리에 로드 스토리보드나 nib(xib)를 사용하지 않는다면 이 메소드를 오버라이드해서 뷰를 만들고 계층을 구성해야된다. viewDidLoad() 화면을 나오기 위해 여러 프로세싱 처리가 준비가 된 상태 ViewController가 메모리에 로드되고 난 후에 호출됨 뷰의 로딩이 완료되었을 때 시스템에 의해 자동으로 호출됨 한번씩만 호출된다. ​ viewWillApear() 뷰가 계층 구조에 추가되기 직전(화면이 나오기 바로 전인 상태) 또는 해당 뷰가 나타나기위한 애니매이션이 설정되기전 호출 뷰가 화면에 나타나기전 추가작업 수행 가능 view의 레이아웃을 계산하는 시점이 viewDidLoad와 viewWillAppear사이 화면이 다시 나올때도 계속 호출된다. ..

iOS 기초 2021.12.07