스파르타 코딩 클럽 - iOS 스타터 6기/본 캠프

21. 스파르타 코딩 클럽 - UIKit

seongpil Heo 2025. 3. 25. 21:16

 💡 UI와 UX의 차이

 

UI (User Interface)

  • Interface는 상호작용 할 수 있는 창구, 상호작용할 수 있는 매개체를 의미한다. ex) 전자레인지의 작동 버튼들 (인터페이스)
  • ex) TV와 상호작용하려면 리모컨 버튼들(인터페이스) 필요.
  • UI는 앱에서 유저와 상호작용하는 구성 요소(창구)들.            이미지 뷰, 스위치 버튼, 아이콘, 버튼, 스크롤 뷰 등.
  • ex) 타이틀, 배터리 잔량, 텍스트 입력 창,
  • 앱을 구성하는 모든 시각적 요소들은 UI 가 될 수 있다.

 

 

 

 

 

UX (User Experience)

  • User Experience는 유저 경험을 의미한다.
  • 앱을 개발하는데, 버튼 1과 버튼 2를 유저가 순서대로 눌러야 하는 상황이 연출된다고 가정.
  • 좌/우 예시 중 어떤 게 유저 경험에 좋고 나쁠까?
  • 좌측 예시가 유저의 손가락을 덜 움직이게 하기 때문에 유저 경험에 더 좋다.
  • 이럴 때 UX 가 더 좋다고 표현한다. 그리고 앱을 서비스하는 회사에서 이 사소한 차이가 매출의 차이를 낼 수 있게 된다.

 

 

 


 🎯 UIKit 개념

✅ UIKit

- iOS 앱에서 필요한 UI 요소들을 제공하는 프레임워크
- 애플이 제공하는 프레임워크
- UIKit 은 앞서 말한 예시의 UI 구성요소를 이미 다 제공하고 있다.

버튼 = UIButton , 제목 표시 = UILabel , 텍스트 입력창 = UITextView,

스크롤 뷰 = UIScrollView , 이미지 뷰 = UIImageView , 등등..
💡 프레임워크(Framework)란?

UIKit이 UI 프레임워크라고 자연스럽게 설명하고 지나갔지만, 프레임워크란 무엇일까.
Framework라는 말 그대로 직역을 해보면 Frame = 틀, work = 작업. 즉 작업을 하는 틀(뼈대)을 의미합니다.
“이런 이런 맥락 안에서 개발을 해라”라는 틀을 제공해 주고, 그걸 사용하는 개발자는 그 틀 안에서 개발을 하게 됩니다.

다시 한번 UIKit을 이해해 보면,
iOS 개발자가 Swift로 UI를 개발할 수 있는 틀을 제공하는 도구로 이해할 수 있습니다.

 🎯 UIKit vs SwiftUI

▪️ UIKit vs SwiftUI

• SwiftUI는 UIKit과 같은 UI 개발 프레임워크.
• iOS 13 이상 버전부터는 SwiftUI로 개발 가능.
• 즉, UIKit 이후에 SwiftUI 가 등장.
• SwiftUI는 선언적 프로그래밍을 하게 되고, UIKit 은 명령적 프로그래밍을 하게 된다.
    ◦ 선언적 프로그래밍: UI의 상태에 대해 선언하고, 상태가 변경되면 자동으로 UI를 업데이트.
    ◦ 명령적 프로그래밍: UI의 상태를 명령으로 정의하고, 변화에 따른 업데이트를 직접 처리.
• SwiftUI는 아래 사진과 같은 Preview를 보면서 개발 가능. </aside>

🤔 왜 UIKit을 SwiftUI 보다 먼저 공부하나요?

• 앞서 말한 것처럼, SwiftUI는 iOS 13 버전부터 지원되기 때문에, 비교적 최신에 나온 프레임워크.
• SwiftUI보다 UIKit이 개발자에게 사용된 기간이 길다. 역사가 탄탄한 프레임워크.
• 시중 자료 중 UIKit으로 작성된 코드가 SwiftUI로 작성된 코드보다 훨씬 많다. 공부 자료가 많다.
• 현재 서비스 중인 앱들은 iOS 13 보다 낮은 버전을 지원하는 앱이 굉장히 많다.
   → SwiftUI로 개발을 한 앱은 사용할 수 있는 유저 풀이 UIKit으로 개발한 앱보다 줄어들게 된다.
       이는 서비스를 운영하는 회사 입장에선 주의 깊게 고려할 요소.
• 아직은 취업시장에서 원하는 기술 스택이 UIKit의 비율이 더 높다.
• SwiftUI도 물론 굉장히 좋은 기술입니다 :)

 🎯 Cocoa Framework

Cocoa Framework

 

iOS 공부를 하다 보면 Cocoa라는 단어를 많이 보게 됨.

 

Cocoa Framework는 애플에서 iOS, macOS 등의

애플 운영체제용 애플리케이션을 제작할 때

사용하는 프레임워크를 말한다.

 

Cocoa Framework 중 iOS를 위한 프레임 워크를

Cocoa Touch라고 한다.

UIKit, Foundation 이 Cocoa Touch 안에 포함된다.


 🎯 import Foundation vs import UIKit

 

  • NewFile로 새로운 파일을 생성할 때, Swift File / Cocoa Touch Class를 선택해서 생성할 수 있음.
  • Swift File로 생성하면 import Foundation이 되어있는 상태로 생성.
  • Cocoa Touch Class로 생성하면 import UIKit이 되어있는 상태로 생성.
  • 앞선 개념에서 배웠듯, UIKit 은 UI를 위한 프레임워크.
  • 하지만 Swift로 반드시 UI 관련 코드만 작성하게 되는 것은 아니다. UI와 무관한 코드를 작성할 수 있다. ex) 단순 연산, 비즈니스 로직, 네트워크 관련 로직 등..
  • 그런 경우 import UIKit을 하는 게 아니라 import Foundation을 한다.
  • Foundation 은 Swift를 위한 기초 프레임워크이지만 UI 관련 프레임워크가 생략된 것.
  • 파일의 맨 처음에 import Foundation이 되어있냐, import UIKit이 되어있냐에 따라 그 파일에 작성된 코드의 의도와 범위를 유추해 볼 수 있게 됨.

 🎯 Safe Area

 

 

Safe Area

 

  • 아이폰에는 Safe Area라는 보이지 않는 영역이 존재.
  • Safe Area는 앱의 컨텐츠가 안정적으로 보이기 위한 영역
  • 아이폰 기기마다 모습이 조금씩 다르기 때문에 Safe Area 가 필요.
  • 예를 들어 노치가 있는 기기도 있고, 없는 기기도 있는데 이런 기기 특성과 무관하게 안정적으로 앱의 컨텐츠를 노출시켜 주기 위한 가이드 영역.

 

 


 🎯 AutoLayout & Constraint

💡 AutoLayout

◦ AutoLayout 이란 기기 사이즈에 맞춰 자동으로 사이즈를 맞춰주는 것.
◦ AutoLayout을 사용하지 않을 경우, iPhone 15에서 노출된 사진의 위치와 iPad에서 노출된 사진의 위치가
  의도와 맞지 않게 다르게 된다.
◦ 마지막 사진은 AutoLayout을 적용시킨 사진. 
 💡 Constraint

◦ Constraint는 뷰와 뷰 사이의 제약조건을 의미한다.
◦ left / right / top / bottom
   각각 좌 / 우 / 위 / 아래 제약 조건을 의미.
◦ leading / trailing
   직역하면 앞 / 뒤 제약 조건인데, 지역화된 조건이기 때문에 왼쪽에서 오른쪽으로 읽는 게 자연스러운 지역 조건의 기기에서는         leading = left, trailing = right로 대응되고, 반대의 경우엔 leading = right, trailing = left로 대응된다.
◦ 위 고양이 사진에서 기기의 leading / trailing / top / bottom Constraint를 지정해 두었기 때문에
   기기가 달라지더라도 원하는 레이아웃으로 조정된다. 

 🎯 Margin, Padding

 

 

Margin, Padding

  • Margin은 Border 바깥쪽을 차지. 주변 요소와 거리를 두기 위한 영역.
  • Padding은 Content와 Border 사이의 여백을 나타내는 영역. Content 영역이 배경색이나 배경 이미지를 가질 때, 이 Padding 영역까지도 영향을 미침.