SwiftUI

SwiftUI - 개요

iosos 2024. 1. 7. 16:04

SwiftUI

  • 목적 : 앱 개발을 더 쉽고 빠르게 함과 동시에 소프트웨어를 개발할 때 일반적으로 발생하는 버그를 줄이는 것
  • 라이브 프리뷰 기능을 이용하여 실시간으로 테스트 가능
  • 스위프트의 장점은 선언적 구문(declartive syntax)과 데이터 주도(data driven) 기반에서 비롯됨

 

 

UIKit과 인터페이스 빌더

  • 선언적 구문에 대한 의미와 장점을 이해하려면 UI 레이아웃이 SwiftUI 이전엔 어떻게 설계됐는지 알아야 함
  • SwiftUI 도입 이전에는 iOS 소프트웨어 개발 키트(Software Development Kit, SDK)를 구성하는 여러 프레임워크와 함께 UIKit 이용하여 개발함
  • UI 레이아웃을 설계하도록 Xcode에서는 인터페이스 빌더 도구가 포함됨
    • 앱을 구성하는 각각의 화면을 담은 스토리보드를 생성할 수 있게 해줌
  • UI 레이아웃은 인터페이스 빌더 내에서 구축되며 여러 컴포넌트를 드래그하여 캔버스의 원하는 위치에 두는 방식 → 인스펙터 패널을 통해 컴포넌트의 속성을 바꿀 수 있음
  • constraint : 화면의 레이아웃이 디바이스 화면 크기에 따라 어떻게 달라지는지, 디바이스의 방향에 따라 어떻게 변하는지, 각 컴포넌트와 다른 컴포넌트의 크기를 관장하는 것
  • 버튼이나 슬라이더 같은 사용자 이벤트 응답 컴포넌트는 해당 이벤트를 처리하는 앱 소스 코드의 메서드와 연결됨
  • 이러한 개발 과정의 다양한 단계에서는 잘 작동하는지 확인하기 위해 시뮬레이터나 디바이스 앱에서 앱을 컴파일하고 실행해야 함

 

 

 

SwiftUI의 선언적 구문

  • 기존의 UIKit과 인터페이스 빌더를 사용하는 방법과 완전히 다른 방법인 선언적 구문이 SwiftUI에 도입됨
  • 화면을 구성하는 컴포넌트들의 레이아웃과 모양에 대한 복잡한 세부사항을 직접 설계하는 것이 아닌 단순하고 직관적인 구문을 이용
  • UI가 어떤 모양이어야 하는지를 선언하는 방식
  • 기본 과정
    1. 레이아웃에 포함될 컴포넌트 선언
    2. 그것들이 포함될 레이아웃 매니저 종류 (VStack, HStack Form, List 등) 명시
    3. 속성(버튼의 텍스트, 색상, 탭 제스처 이벤트 시 호출될 메서드 등)을 설정하기 위해 수정자(modifier)를 사용
    4. 레이아웃 위치, 컨스트레인트, 렌더링 방법에 대한 세부 사항은 SwiftUI가 자동 처리
  • SwiftUI 선언은 계층적으로 구조화 되어 있음
    • → 따라서 작고 재사용 가능한 사용자 정의 하위 뷰와 함께 구성하면 복잡한 뷰 쉽게 생성 가능
  • 뷰 레이아웃이 선언되고 테스트 되는 동안 프리뷰 캔버스를 통해 실시간으로 변경되는 레이아웃 생성 가능
  • 라이브 프리뷰 모드를 사용하여 시뮬레이터나 디바이스에 빌드하고 실행하지 않아도 프리뷰 캔버스 내에서 앱을 실행하고 테스트 가능

 

 

 

SwiftUI는 데이터 주도적이다

  • SwiftUI 이전에는 앱 내 데이터의 현재 값을 검사하려면 그에 대한 코드가 포함되어야 했음 → 복잡도 증가
  • SwiftUI는 데이터 모델, UI 컴포넌트, 기능을 제공하는 로직을 바인딩하는 방법으로 복잡도 해결
  • 데이터 주도로 구현하면 데이터 모델은 앱의 다른 부분에서 구독(subscribe) 할 수 있는 데이터 변수를 게시(public)하게 됨 → 데이터 변경된 사실을 모든 구독자에게 자동 전달

 

 

 

SwiftUI vs UIKit

  • SwiftUI 기반 코드를 포함하는 앱은 오직 iOS 13 이후 버전이 실행되는 디바이스만 가능
  • iPhone SE, iPhone 6 이후 버전부터 사용 가능
  • SwiftUI는 빠르고 효율적인 앱 개발 환경을 제공할 뿐만 아니라, 코드를 변경하지 않아도 다양한 애플 플랫폼(iOS, iPadOS, macOS, watchOS, tvOS )에서 동일한 앱 사용 가능
  • SwiftUI는 다양한 종류의 사용자 인터페이스 컴포넌트가 있지만, 지도, 웹 뷰 통합하는 식의 특정 기능은 UIKit을 사용해야 함

'SwiftUI' 카테고리의 다른 글

SwiftUI - 프로젝트 분석  (0) 2024.01.07
SwiftUI - SwiftUI 모드로 Xcode 이용  (1) 2024.01.07
SwiftUI - @Binding  (0) 2023.08.25
SwiftUI - @State  (0) 2023.08.19
SwiftUI - 튜토리얼  (0) 2023.08.17