라이징캠프 iOS 11기 1주차 개발일지

Ryu_jin·2022년 11월 7일
0
post-thumbnail

1주차 개발일지

[복습을 위한 질문]

  • Q1. 개발자에게 필요한 역량 3가지는 무엇인가?
    • 소통 능력
    • 스스로 자기주도적으로 공부하는 습관 ( 구글링, 스택오버플로우 등 )
    • 지속적인 학습 ( ex. 개발자는 죽을 때 까지 공부해야 한다.)
  • Q2. 플랫폼이란 무엇인가?
    • 플랫폼이란 필요한 서비스를 제공하는 것이다.

    • 플랫폼은 정해진 규칙과 규정을 바탕으로 규제되어 있으며 사용자 메뉴얼이 있다.

      플랫폼의 조건

    • 수요자(사용자)와 공급자(관리자)가 존재한다.

    • 사용자들이 이용(상호작용) 할 수 있는 환경이 존재한다.

      예시) 에어비앤비 - 집주인(공급자)과 여행자(수요자)를 연결해주는 숙박 플랫폼

  • Q3. 플랫폼의 특성을 고려해볼 때, IOS는 어떻게 적용되나요?
    • IOS에서는 모바일 플랫폼으로써 apple developer에 정의된 메뉴얼을 따른다.
    1. 안정성

    2. 성능

    3. 비즈니스

    4. 디자인

    5. 법적 요구 사항

      App Store 심사 지침

    • 개발 언어 부분에서는 Swift 공식문에 정의된 메뉴얼을 따른다.

      Swift.org

  • Q4. 공식문서(개발문서 및 HIG) 를 봐야하는 이유는 무엇인가요? Apple에서 정의한 지침을 따르고 제공하는 가이드라인에 맞추어 개발해야 하기에 apple developer 공식문서와 Human Interface Guidelines 및 Swift 공식문서를 확인하고 익혀야 한다.

1. Info.plist / AppProject 속성

Information Property List Files

Info.plist 파일은 프로젝트를 생성 시 자동으로 생성되며, 실행 패키지에 관한 필수 설정 정보가 포함된 구조화된 텍스트 파일이다. (애플리케이션에 관한 기본정보가 들어있는 파일)

일반적으로 UTF-8로 인코딩 되며 내용은 XML을 사용합니다.

root XML노드는 키,밸류(Keys and Value)로 구성된 딕셔너리(1대1 대응) 형태이며 시스템은 키와 값을 사용하여 앱과 앱의 설정을 가져옵니다.

플러그인, 프레임워크, 앱에 Info.plist(정보 속성 목록 파일)가 있어야 합니다.

Xcode의 구성

  • Toolbar
    • 앱 빌드 및 실행, 작업 진행 상황 보기, 기본 창 구성을 위한 도구 모음입니다.
  • Editor area
    • 코드, 사용자 인터페이스 파일, 속성 목록, 프로젝트 설정 등을 포함하여 프로젝트의 내용을 보고 편집하기 위한 편집기 영역입니다.
  • Navigator area
    • 파일, 기호, 중단점 및 빌드 정보를 포함하여 프로젝트의 일부를 보기 위한 네비게이터 영역입니다.
  • Debug area
    • 디버깅 중 앱 실행을 제어하고 변수, 레지스터 및 상태 정보를 표시하기 위한 디버그 영역입니다.
  • Inspector area
    • 프로젝트 또는 네비게이터 또는 편집기 영역에서 선택한 개체에 대한 정보를 보고 편집하기 위한 검사기 영역입니다.

1. PROJECT

  • 모든 파일, 리소스, 소프트웨어 빌드에 필요한 모든 정보의 저장소
  • 프로젝트에는 앱을 구축하는 데 사용되는 모든 요소가 포함되어 있으며, 해당 요소 간의 관계(relationships)를 유지한다.
  • 프로젝트는 product를 build하는 방법을 명시하는 target을 하나 이상 포함하며 모든 target에 대한 기본 build setting을 정의한다.

1-1. Info

Deployment Target- Minimuim OS 지원 버전
Configurations- 기본적으로 Debug, Release를 지원
- 개발 버전, 릴리즈버전, 무료버전, 유료버전, 베타 등 다양한 환경에서 테스트를 하기 위해 Configuration을 추가할 수 있음
Localizations-지원하는 언어(지역)

-Base : 영어
-로컬라이징 해주고 싶은 언어를 설정해주는 곳
(로컬라이징: 나라별로 언어를 설정하는 것) |

1-2. Build Settings

  • Build Settings
    • 아주 중요하고 민감한 값으로, project.pbxproj 파일에 Build Setting을 저장하고 있다.

    • Basic / Customized / All 필터 옵션

      • Customized 필터 옵션을 통해 수정된 값들만 모아서 볼 수 있다.
    • Target Build Setting보다는 Project Build Setting을 이용하기

      • 프로젝트 안에서도 개발용, 배포용 타겟을 별도로 관리하는 경우가 많다.
        Target 별로 빌드셋팅을 바꿀 수 있으나 가급적 같아야 하는 경우가 더 많다.
    • Level 단위로 Build Setting 보기

      • 현재 적용되어 있는 Build Setting이 어느 차원에서 정의되었는지(기본 값을 쓰고 있는지, 프로젝트에 적용된 값을 쓰고 있는지, 타겟별로 override를 한것인지, xcconfig에서 정의된 값을 쓴지) 등을 볼 수 있음.
    • Build Setting의 의미 파악하기

      • Build setting의 값은 매우 많기 때문에 알고 싶은 값을 선택한 후 Xcode의 우측 패널을 열어 Quick Help를 사용할 시, 각 값들에 보다 상세한 설명과, 값을 바꾸었을 때 어떤 변화가 있을지 정보를 얻을 수 있다.
    • 불필요한 Build Setting의 변경을 최소화 합니다.

      1-3. Package Dependencies

  • Package Dependencies
    • Swift Package 를 추가하는 곳
      • 프로젝트 간에 코드를 공유하거나 다른 개발자의 코드를 활용할 수 있습니다.

2. TARGET

  • Xcode에서 Build를 실행하여 생성되는 최종 제품 (product)
    • 앱이 될 수도 있고, 프레임워크가 될 수도 있고, Unit Test번들일 수도있다.
  • Target은 빌드할 product를 지정하며 프로젝트 또는 workspace의 파일 집합에서 product의 빌드 방법(by Build Settings / Phases)을 지정한다.
  • 프로젝트에는 여러 개의 Target이 포함될 수 있으며, 각 Target은 하나의 product를 생성한다.
  • Target은 Target 내에서 지정한 build setting에 의해 override 되지 않는 이상 기본적으로 Project Build Setting을 상속받는다.
  • Target은 같은 파일로 만들어도 결과적으로는 다른 Product를 만드는 것이다.

2-1. General

General

  • Identitiy

    • Supported Destinations
      • 애플리케이션이 지원하는 디바이스 설정
      • 멀티 플랫폼 지원 여부 설정
    • Minimum Deployments
      • 최소 지원 버전 설정
      • PROJECT의 버전과 TARGETS의 버전이 다를 경우 TARGETS에 지정된 버전을 따른다.
    • Identity
      • App Category : 애플리케이션 분류 (교육, 게임, … 등)
      • Display Name : 프로젝트 명
      • Bundle Identifier : 각 App 마다 가진 고유의 식별자, 번들 ID (앱 스토어 업로드를 위한 고유 값)
      • Version : 애플리케이션 버전
      • Build : (동일한 버전 내에서) 업데이트를 할 때 설정 → 빌드 횟수 관리 Build는 매번의 프로젝트 빌드시 번들 버전을 표시하기 위해 사용 개발자가 프로그램을 트래킹 하기위해 사용
    • Deployment Info : 앱을 배포 할때 지원 항목 설정
      • iPhone Orientation : 아이폰의 물리적 방향 지정
      • iPad Orientation : 아이패드의 물리적 방향 지정
        • Portrait : 세로 모드
        • Upside Down : 디바이스가 뒤집어진 상태 (일반적으로 사용하지 않음)
        • Landscape Left : 가로 모드 (장치를 왼쪽으로 회전한 경우)
        • Landscape Right : 가로 모드 (장치를 오른쪽으로 회전한 경우)
      • Status Bar Style : 상태바 스타일 지정
        • Requries full screen : 전체 화면 미디어를 표시할 때 상태 표시줄을 일시적으로 숨긴다
  • App Icons and Launch Screen

    • 앱 아이콘 및 런치 스크린 설정
      • App Icons Source : Assets.xcassets 파일로 이동하며, 상황별 아이콘이 있다. (하나라도 비어 있으면 검수 시 reject 당할 수 있다 !)
      • Launch Screen File : 앱 실행 시 나오는 splash 화면.
  • Supported Intents

    • 가령, 어떤 App이 SiriKit와 상호작용을 하려면 Intents가 필요하다. 이럴 경우 Supported Intents에 추가해줘야 한다.
  • Frameworks, Libraries, and Embedded Content

    • 앱에서 쓰이는 라이브러리를 embeded 시킬지 or 안시킬지에 대한 설정.
      • embeded 시킬 시 → 앱에 library가 포함된 채로 배포.
      • embeded 안 시킬 시 → 앱 실행 시에 library 참조.
  • Development Assets

    • 앱에는 넣지 않고 Development 단계에서만 쓰고 싶은 Assets들을 넣습니다.

2-2. Signing & Capabilities

  • Signing
    • 애플에서 받는 개발자 인증 관련 항목을 설정합니다.
    • Automatically manage signing 체크 시 → 내 인증과 관련된 자료를 Xcode가 알아서 서버에서 가져옴.
  • **Provisioning Profile**
    • "프로비저닝 프로파일은 iOS 디바이스를 Apple 인증서와 연결하는 역할을 담당합니다."

2-3. Resource Tags

  • Tag를 추가 및 제거할 뿐만 아니라 Tag 간에 Resource를 이동하는 데 사용할 수 있습니다.
  • 태그를 사용하여 주문형 배포를 위해 자산을 그룹화할 수 있음 ⇒ 앱의 일부로 모든 이미지를 배송하는 것과 달리 필요할 때 앱에서 다운로드할 수 있는 이미지 그룹을 정의할 수 있습니다.

2-4. Info

  • Info : 파일 유형 및 서비스 정보 추가
    • Custom iOS/macOS Application Target Properties : 사용자 지정 대상 속성
    • **Document Types**
      • 문서 유형 설정은 앱에서 만들고 편집 할 수 있는 문서 유형을 지정하고 iOS 또는 Mac OS에서 해당 문서 유형에 대해 표시되는 사용자 정의 아이콘을 제공한다.
    • Exported Type Identifiers & Imported Type Identifiers
      • 앱에서 내보내거나 가져올 수있는 모든 파일 유형에 대해 내보내고 가져온 UTI를 추가한다.
      • 일반적으로 앱에 고유 한 문서 유형과 달리 UTI는 일반 텍스트 또는 .png. 예를 들어 UTI는 앱간에 클립 보드에 복사 및 붙여 넣기를 지원
    • **URL Types**
      • URL 유형 설정을 사용하면 사용자 지정 프로토콜을 사용하여 다른 앱과 데이터를 교환하기 위한 사용자 지정 스키마 지정 가능
      • 파일의 유형 및 서비스 정보 추가, 앱과 관련된 속성 앱이 만들거나 열 수 있는 파일의 유형

2-5. Build Settings & Build Phases & Build Rules

  • Build Settings
    • PROJECT의 빌드세팅과 같은 역할을 하며 응용 프로그램의 컴파일 방법을 설정한다.
    • CPU 아키텍처, Swift 버전, 컴파일러 최적화 등과 같은 설정.
  • Build Phases
    • Dependency와 유저의 컴파일 코드를 포함하는 정보로써 앱이 어떤 파일들을 갖고 배포되는지를 보여줍니다.
    • 프로젝트로 빌드하는 동안 빌드 시스템에서 수행한 작업을 편집하고 재정렬.
    • 타깃의 제품을 빌드하기 위해 필요한 파일들을 단계별로 어떻게 처리할지 구성한 목록이다.
    • 의존성이 있는 다른 타깃들, 컴파일 단계에서 사용할 소스들, 링크 단계에서 사용할 라이브러리나 프레임워크, 앱 번들에 복사할 리소스 파일들을 단계별로 지정하게 된다.
  • Build Rules
    • 일반적으로 사용되는 방법은 아니며 Build Phases와 유사하지만 Build Rules는 빌드 프로세서에 적용 될 수 있지만 Phases는 빌드 프로세스 자체의 일부이다.
    • Build Rules는 추가 소스 코드 파일을 컴파일하여 빌드 프로세스를 사용자 지정하는 데 사용 할 수 있다.
    • 빌드 프로세스 중에 특정 유형의 파일을 처리할 때 빌드 시스템이 사용하는 규칙을 설정합니다.
      • 대부분의 개발자는 보통 다룰 일이 없다고 한다.

🔥변경된 Info.plist

기존 Info.plist

  • Information Property List
    • Application Scene Manifest : Scene 기반의 생명주기(Life Cycle) 관련 정보 설정
    • Enable Multiple Windows : 여러 Scene을 설정 할 수 있는지 체크하는 속성
    • Scene Configuration : 새 Scene을 만들 때 UIKit의 기본 설정값
      • **Application Session Role :** 2가지 역할 (Application / External Display) - 기본화면?…
        • Item 0 (Default Configuration)
          • Configuration Name : 설정 이름
          • Delegate Class Name : 대신 코드를 실행해 줄 클래스 이름
          • Storyboard Name : 스토리보드 이름 -Target Info 속성에서 보면 Session Role에 main 스토리보드 설정 되어있다. -기본화면 설정 같음…?

➡️ 변경되어 Target 탭에 Info

🙋🏻‍♂️Info.plist - Privacy 관련

  • info.plist에 Privacy가 도저히 찾아 지지 않아 많이 해맸습니다.
    • Xcode 업데이트에 따라 보여지는게 달랐으며 info.plist에서 add row 를 통해 생성할 수 있습니다.

2. 스토리보드 컴포넌트 종류 및 AutoLayout 개념

  1. UIView / UILabel / UIButton
  2. UIScrollView
  3. UIStackView
  4. UINavigation Controller / UITabbarController

Storyboard

  • iOS 어플리케이션의 UI 흐름을 시각적으로 표현한 것으로 화면의 내용과 화면과 화면 간의 연결을 보여줍니다.

UIKit

❗️IOS 개발을 처음 시작할 때 가장 처음 마주하게 될 프레임워크는 UIKit 이라고 할 수 있다.                             Xcode 13 로 프로젝트를 만들면 가장 먼저 ViewController.swift 파일에 UIKit이 import 되어 있다.

**1. UIKit이 어떤 기능을 하는 지**

  • UIKit은 프레임워크다. (Framework)

  • UIKit프레임 워크는 iOS와 tvOS앱을 위한 필수적인 인프라를 제공한다.

  • 앱은 기본 동작을 UIKit에 의존하며 UIKit은 특정 요구에 맞게 동작을 커스터마이즈 할 수 있는 다양한 방법을 제공한다.

    • 핵심 오브젝트 (core object) 제공
      • 오브젝트들의 인터렉션이나 콘텐츠 요소를 UIKit이 지원하고 있다.
  • UIKit의 필수 리소스

    • 앱 아이콘
    • 화면 스토리보드 실행

UIView

❗️공식문서에서 UIView는 화면의 직사각형 영역을 관리하는 객체라고 합니다.

  • View는 앱의 유저 인터페이스(User Interface)에 있어서 가장 기본적인 구성 요소이며, UIView 클래스 모든 view의 공통적인 동작을 정의합니다.
  • view객체는 객체의 bounds 사각형 안에서 컨텐츠를 만들며 이 컨텐츠와의 모든 상호 작용들을 처리합니다.
  • UIView 클래스는 인스턴스화하고 background color(배경색)을 설정할 수 있는 구체적인 클래스입니다.
  • 또한, 이 클래스를 상속하여 좀 더 정교한 콘텐츠를 그릴 수 있습니다.→ 앱에서 흔히 보이는 레이블, 이미지, 버튼 및 기타 UI요소들을 나타내려면 직접 만드는 것보단 UIKit 프레임워크가 제공하는 view를 상속하여 사용하세요. (버튼, 레이블, 이미지 등 모두 UIView를 상속하여 만든 객체들)
    • View객체는 앱을 통해 사용자와 상호작용 하기 위한 가장 주된 방법이기 때문에 많은 책임이 따릅니다.

Drawing and Animation

  • View들은 UIKit또는 Core Graphics를 이용하여 직사각형 영역안에 컨텐츠를 그립니다.
  • View의 속성들을 새로운 값으로 애니메이션 할 수 있습니다.

Layout and Management

  • View들은 0개 이상의 subview를 포함합니다.
  • view들은 그들의 subview의 size나 position을 조절할 수 있습니다.
  • 오토레이아웃을 사용하여 view의 계층의 변화에 따라 view의 크기와 위치를 변경하는 룰을 정합니다.

Event handling

  • View는 UIResponder (응답자) 를 상속받아 터치 및 다른 이벤트에 대해 응답할 수 있습니다.
  • 일반적인 제스쳐를 처리하기 위한 gesture regognizers (제스처 인식기)를 설치할 수 있습니다.

UILabel

  • Text를 한 줄 이상 표시하는 View입니다.
    • Label Text의 전체 모양을 구성하고 특성 문자열을 사용하여 텍스트 내의 하위 문자열 모양을 사용자 정의할 수 있습니다.
    • 프로그래밍 방식으로 또는 Interface Builder의 Attributes inspector를 사용하여 인터페이스에 Label을 추가하고 사용자 정의하십시오.
  • 인터페이스에 Label을 추가하는 방법
    • 콘텐츠를 나타내는 문자열 또는 특성 문자열을 제공합니다.
    • 속성이 지정되지 않은 문자열을 사용하는 경우 Label의 모양을 구성합니다.
    • 인터페이스에서 Label의 크기와 위치를 제어하는 Auto Layout 규칙을 설정합니다.
    • 접근성 정보 및 현지화된 문자열을 제공합니다.

**Accessing the text attributes (텍스트 속성 액세스)**

**Sizing the label’s text (레이블 텍스트 크기 조정)**

**Managing highlight values (하이라이트 값 관리)**

**Drawing a shadow (그림자 그리기)**

**Drawing and positioning overrides (도면 및 위치 재지정)**

**Getting the layout constraints (레이아웃 제약 조건 가져오기)**

**Accessing additional attributes (추가 속성 액세스)**

**Supporting types (지원 유형)**

너무 많아서 … 공식문서 첨부해서 공부….

UIButton 속성

UIScrollView

UIStackView

**UINavigationController**

  • 계층적 콘텐츠 탐색(navigating)을 위한 스택 기반 체계(stack-based)를 정의하는 컨테이너 뷰
    (Container View) 컨트롤러입니다.
    [Apple Developer Documentation](https://developer.apple.com/documentation/uikit/uinavigationcontroller)

**UITabBarController**

  • 다중 선택 인터페이스를 관리하는 컨테이너 뷰(Container View) 컨트롤러로, 선택 항목에 따라 표시할 자식 뷰(Child View) 컨트롤러가 결정됩니다. Apple Developer Documentation
  1. Gray Button
  • 제목, 부제목, 이미지 및 기타 모양 속성(Property)을 가질 수 있는 회색 스타일 버튼을 표시합니다.
  1. Tinted Button
  • 제목, 부제, 이미지 및 기타 모양 속성을 가질 수 있는 색조(Tinted) 스타일 단추를 표시합니다.
  1. Filled Button
  • 제목, 부제, 이미지 및 기타 모양 속성을 가질 수 있는 채워진(Filled) 스타일 단추를 표시합니다.
  1. Pull Down Button
  • 풀 다운 버튼은 작업 목록을 나타내는 메뉴를 표시합니다. → 눌렀을 시 리스트 보임 (작업 목록 나열 등)
    • 하위 메뉴를 제공할 때 유용
    • 팝업 단추와 달리, 풀다운 단추는 사용자가 선택한 메뉴 항목에 상관없이 항상 동일한 내용을 표시합니다.
  1. Pop up Button
  • 팝업 버튼을 클릭하면 단독 선택 목록을 나타내는 메뉴가 표시됩니다. (이름순 / 최근 추가순 / 최근 재생순)
  • 상호 배타적인 옵션 (mutually exclusive) 또는 상태의 무계층 목록 (flat list)을 표시합니다.
  • 선택한 선택 항목은 팝업 버튼의 제목으로 표시됩니다.
    • 팝업 버튼이 자신의 콘텐츠에 영향을 미치는 선택을 도와준다.

3. 다양한 Constraint 제약 조건을 통해 실제 프로덕트 애플리케이션 프론트 구성해보기

🔥넷플릭스 구현 영상🔥

⚙️Info 세팅

  • app category : video
  • display name : Netflix
  • Appearance : Light - 라이트 모드 고정 색과 음양이 자동으로 바뀌어 기본 디자인이 변경 될까봐
  • iOS deployment target : iOS 16.0
  • App Icon : AppIcon
  • Launch Screen File : Launch Screen.storyboard

👏🏻사용한 UIKit 컴포넌트

  • UITabBarController - 화면 아래 탭바
    • 넷플릭스 로고, airplay, 돋보기(검색), 프로필 로고 (Tab Bar Item으로 구현)
  • **UINavigationController -** 화면 위 네비게이션
    • 홈, New&Hot, 저장된 컨텐츠 목록 (Bar Button Item으로 구현)
  • **UITabBarItem**
  • **UIBarButtonItem**
  • **UIStackView**
    • Vertical Stack View
  • **UIScrollView**
    • Vertical Scroll View
    • Horizontal Scroll View
  • **UILabel**
  • **UIImageView**

Q. info.plist가 무엇인가요?

  • 실행 패키지에 관한 필수 정보가 포함된 구조화된 텍스트 파일이다.

Q. info.plist가 왜 필요하죠?

  • 필수 정보가 포함된 파일로 기본 뼈대를 생성하고 설정을 변경및 수정하기 위해서

Q. ViewController는 무엇인가요?

  • 화면 구성 요소들인 뷰를 관리하며 화면과 데이터 사이의 상호작용 을 관리한다.

Q. segue는 무엇인가요?

  • iOS에서 여러 ViewController 사이의 전환 시에 사용하는 객체이다.
    • segue를 통해 화면 전환 뿐 아니라 데이터 전달도 가능하다.
    • 그러나 segue가 많아지거나 ViewController가 많아지면 performSegue나 present 추천

Q. Autolayout은 무엇인가요?

  • 오토레이아웃 view의 위치 - 앵커 (x,y축), 사이즈 를 지정해주면 화면에 자동으로 그려줌
  • 위치와 view size가 제일 중요!!

아직 까지 해결 못해서 물어보고 싶은 점

  • 분명 safe area 를 사용했는데 어째서 배터리와 시간이 시뮬레이터에 보이지 않는지 궁금…

참고 레퍼런스 (내가 찾아본)

Xcode 구성

Apple Developer Documentation

Target 이란

[iOS] Xcode Target이란?

IOS 점유율 확인 사이트

App Store

Xcode에서 Build Setting 제대로 관리하기

Xcode에서 Build Setting 제대로 관리하기

Intent extensions

Apple Developer Documentation

Info.plist 의 key and values

About Info.plist Keys and Values

Info.plist 파일의 변경 → Xcode13 이후로 수정된 부분

  • 이것 때문에 서칭할때 헷갈리는 부분이 많았음
  • 기존 Info.plist는 manifest 몇 가지 기본 설정만 있고 여러 창이 비활성화 되어있음.
    • 어디서 수정해야 하냐!?
      • 빌드 시 대상에 대한 전체 Info.plist를 만들고 기본값에서 변경한 내용에 대한 Info.plist 프로젝트 파일만 생성하는 것으로 보인다.
      • Info.plist 를 수정을 원할 시 Target settings → Info 에서 수정해야 함
      • Target에서 info 설정 수정 시 기존의 위치 info.plist 에도 추가/수정 된다. → 동기화 상태
        • 하지만, 둘 중 한 곳에서 설정을 변경했을때 동기화 되지 않고, 프로젝트를 닫고(Xcode 종료) 다시 열어야 해결되는 버그가 있기도 한다고 한다.
      • Project Navigator에 생긴 plist 파일에는 없고,Build Setting > Info.plis Values 에서만 설정할 수 있는 옵션도 있다.
      • 또한 Packaging 탭에서 Xcode가 plist 파일을 생성하지 않도록 설정할 수도 있다.

원인 - Xcode 13 Release Note

Apple Developer Documentation

Scene에 대해 (의미, 생명주기, 쓰임)

  • Xcode 12 → Xcode 13 바뀐점
    • 하나의 앱에 하나의 Window가 존재했었다. → Window 개념이 Scene으로 대체되고 하나의 앱에 여러 Scene을 가질 수 있게 되었다.
  • Scene : 디바이스에서 실행 중인 앱 UI의 하나의 인스턴스. 하나의 App에는 여러 개의 Scene 인스턴스가 있을 수 있다. 이를 통해 아래 사진과 같은 Multi-scene환경을 만들 수 있고, 각 scene를 보여주거나 숨길 수 있다.
    • Scene들은 같은 메모리와 앱 프로세스 공간을 공유하며 서로 동시에 실행된다.

[iOS] iOS 앱의 생명주기(App, Scene)에 대하여

[iOS] iOS13이후의 AppDelegate와 SceneDelegate

  • 추가된 SceneDelegate

[iOS 앱개발] Multiple Window를 위한 SceneDelegate

  • View들은 0개 이상의 subview를 포함합니다.
  • view들은 그들의 subview의 size나 position을 조절할 수 있습니다.
  • 오토레이아웃을 사용하여 view의 계층의 변화에 따라 view의 크기와 위치를 변경하는 룰을 정합니다.

UILabel 관련 공식 문서

Apple Developer Documentation

Pop Up Button - Pull Down Buttons 참고

[iOS] Pull Down Button 과 Pop Up Button


업로드중..

피드백 ui 많이하기 및 간격 조절하기

그리고 화면 구성 safa area맞추기

profile
Empire

0개의 댓글