Ch 01. 명언 생성기 앱 만들기

1 분 소요

Simulator Screen Shot - iPhone 11 Pro - 2022-03-24 at 03 02 06

기능 상세:

버튼을 누를 때마다 랜덤 한 명언이 생성

활용 기술:
  • Stroyboard
  • AutoLayout
  • UILabel
  • UIButton

Cocoa touch Framework

  • iOS 개발환경을 구축하기 위한 최상의 framework
  • 대부분의 클래스 객체를 포함(UIKit, Foundation)

iOS UI(User Interface)

  • UIKit: UI가 붙는 클래스들을 사용하기 위해 import
    • 사용자 인터페이스 관리
    • 이벤트 처리(제스처처리, 애니메이션, 그림그리기, 이미지처리, 텍스트처리)
    • 어플리케이션에 화면을 구성(테이블뷰, 슬라이더, 버튼, 텍스트필드, 알럿창)
    • UIKit의 구조: MVC(Model, View, Controller) 디자인패턴을 사용
      • Model: 앱의 데이터와 비지니스 로직(무엇을)
      • View: 사용자에게 데이터를 보여주는 UI(보여줄것인가)
      • Controller: 모델과 View의 중간다리 역할(어떻게)
      • 현실 MVC: viewController의 비중상승 -> 내부구조 복잡, 유지보수 힘듬 -> MVVM, 바이퍼 패턴 등장
  • UIViewController
    • 사용자가 화면을 보는 것에 대한 관리기능
    • 최소 하나 이상의 viewController를 지님
    • 역할
      • 데이터 변화에 따라 view contents 업데이트
      • view와 같이 사용자 상호작용에 응답
      • view를 resizing, 전체적인 인터페이스의 레이아웃 관리
      • 다른 뷰 컨트롤러와 함께 앱을 구성
    • UIView: 화면을 구성하는 요소의 기본 클래스
      (위치, 크기를 갖는 사각형, 배경색, 문자나 이미지 등으 컨텐츠를 가짐)
  • AutoLayout
    • 제약 조건을 이용하여 뷰의 크기와 위치 지정
    • IPhone의 다양한 해상도 비율에 대응, 가로, 세로보기 응용
    • iOS에서 AutoLayout을 이용한 화면구성은 Storyboard를 사용
      • iOS앱에 사용자 인터페이스를 시각적으로 표현
      • 컨텐츠 화면과 화면간의 연결을 보여주는 도구
      • 제약조건
        1. Add New Constraint: Top, Trailing(오른쪽), Bottom, Leading(왼쪽), 높이, 너비 제약조건 설정
        2. Align: 가로, 세로정렬 제약조건 설정
        3. Resolve Auto Layout Issues: AutoLayout 관련된 이슈들을 해결하는 옵션 제공
  • IBOutlet & IBAction
    • 코드에서 UI로 접근
    • Outlet 변수: 스토리보드에 등록한 UI Object에 접근하여 컨트롤하기 위해 변수에 바인딩
      • Type: 메모리 회수 정책을 나타내는 키워드
        • strong: 다른 곳에서 참조하고 있을 경우에 메모리에서 제거되지 않음, 메모리 누수 발생 가능
        • weak: 다른 곳에서 참조하고 있더라도 시스템이 임의적으로 메모리에서 제거가능
    • Action 함수: 동작을 정의하는 함수
에러:

Set vertical hugging priority to 252
Set vertical compression resistance priority to 749

  • content hugging
    다른 뷰들과 걸린 제약에 의해 본래의 컨텐츠 고유 사이즈보다 늘어나는 거에 대한 저항
  • content compression resistance
    다른 뷰들과 걸린 제약에 의해 본래의 컨텐츠 고유 사이즈보다 줄어드는 거에 대한 저항
  • 우선순위에 따라 컨텐츠 고유 사이즈보다 더 늘어나게 되었을 때 사이즈를 늘릴 건지 줄일 건지 정할 수 있다.
  • 우선순위가 높으면 크기 유지 낮으면 크기가 변함
    • 1~1000(1000: required, 750: high, 500: midium, 250: low)

카테고리:

업데이트: