QuotesGenerator

명언 생성기 앱 만들기

명언 생성기란?

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

결과 화면

아래와 같이 버튼을 누를 때마다 새로운 명언이 생성되도록 구성했다. AutoLayout으로 구성했기 때문에 화면의 크기와 해상도가 변해도 똑같은 화면이 출력된다. (아래는 iphone SE 2nd, iphone 13 이다.) 명언과 명언을 말한 사람의 이름을 quote.swift 파일안에 구조체로 형성한 뒤 viewcontroller에서 해당 구조체를 사용하여 명언 배열을 생성했다. 스크린샷 2022-01-28 오후 4 57 25 스크린샷 2022-01-28 오후 4 58 01

활용기술

  1. Storyboard
  2. AutoLayout
  • UI 구성을 위한 프레임워크
  1. UILabel
  • 명언을 표시할 때 필요한 프레임워크
  1. UIButton
  • 버튼을 누를때마다 명언을 생성시켜줄 버튼을 생성하기 위한 기술

기능을 구현하기에 앞서 필요한 기초 지식

1. UIKit

  • UIKit는 가장 많이 사용하는 프레임워크 중 하나로, 사용자 인터페이스를 관리하고 이벤트를 처리하는 것이 주 목적이다. 주로 처리하는 사용자 이벤트로는 제스쳐 처리, 애니메이션, 그림처리, 그림그리기, 텍스트처리, 테이블뷰, 버튼, 텍스트 필드 등 어플리케이션의 화면을 구성하는 요소도 포함한다. 때문에 자주 사용하는 UI class를 사용하기 위해선 UIKit을 import해줘야한다. 프로젝트를 진행하면서 UI object를 익혀두는 것이 좋다.)
  • 스크린샷 2022-01-27 오전 12 09 45

(사진 출처: 패스트캠퍼스 30개 프로젝트로 배우는 iOS app개발 강의)

  • UIKit의 구조
    • 기본적인 MVC 패턴 사용
      • MVC 패턴 이란?
      • M(Model): app의 데이터와 비즈니스 로직을 가진다.
      • V(View): 사용자에게 데이터를 보여주는 UI담당
      • C(Controller): 모델과 뷰의 중간다리 역할로, 뷰로부터 사용자 액션을 전달받아서 모델에게 어떤 작업을 해야하는지 알려주거나, 모델의 데이터 변화를 어떻게 업데이트 해야하는지 뷰에게 알려준다.
      • M 무엇을, Controller 어떻게, View 보여줄것인가의 패턴을 가진다.
    • UIKit의 MVC패턴 구조를 그림으로 보면 다음과 같다.
      • 스크린샷 2022-01-27 오전 12 14 37
      • 그림에서 보면, View와 Controller의 의존도는 매우 높다. 거의 모든 일을 뷰와 컨트롤러가 담당한다. 더불어 컨트롤러가 뷰의 라이프 사이클에 관여하게 되어 뷰와 컨트롤러를 분리하는 것은 사실상 너무 어렵다. 따라서 프로젝트 규모가 커질 수록, 컨트롤러가 비대해지고 내부 구조는 복잡하게 되어, 유지보수가 힘들어진다. 그래서 이런 문제점을 해결하기 위해 MVVM 패턴이나, VIPER 패턴 등 다양한 디자인패턴으로 MVC 단점을 해결할 수 있다. 하지만 지금은 간단한 앱 구현이기 때문에 쉽게 개발하고 적용이 가능한 MVC 패턴이 더 적합하기에 MVC패턴을 사용하여 개발해 보겠다.

2. UIViewController

  • UIView
    • 화면의 직사각형 영역에 대한 내용을 관리하는 개체로, 화면을 구성하는 기본 클래스
    • 스크린샷 2022-01-27 오전 12 22 33
    • 여러 UI view를 보여주는 용도로 사용한다.
  • UIViewController
    • 앱의 근간을 이루는 객채로, 모든 앱은 최소한 하나 이상의 뷰 컨트롤러를 가지고 있다. 한마디로 사용자가 화면을 보는 것에 대한 관리 기능을 제공한다.
    • ViewController의 주요한 역할 4가지
      • 데이터 변화에 따라서 view 컨텐츠를 업데이트한다.
      • view들과 함께 사용자 상호작용에 응답한다.
      • view를 리사이징 하고 전체적인 인터페이스의 레이아웃을 관리한다.
      • 다른 뷰 컨트롤러들과 함께 앱을 구성한다.

3. AutoLayout

4. IBOutlet & IBAction