처음부터 차근차근

Swift 용어 정리 본문

프로그래밍/Swift

Swift 용어 정리

_soyoung 2022. 5. 9. 10:57
반응형

View

레이블(UILabel),이미지 뷰(UIImageView), 버튼(UIButton), 텍스트 필드(UITextField)와 같은 컨트롤들을 포함하는 것

모든 뷰는 UIKit의 UIView 클래스의 서브클래스이다.

 

 

UIWindow 클래스

앱 UI의 배경막에 해당하는 것

윈도우는 UI를 표시하고 상호작용을 할 수 있는 영역을 제공

 

<특징>

UIWindow는 UIView 클래스의 서브클래스

데스크톱 애플리케이션에는 있는 타이틀바가 없음

사용자는 UIWindow 객체를 직접 보거나 상호작용을 할 수 없음

프로그램으로 생성할 수 있지만, 일반적인 경우 사용자 인터페이스를 디자인할 때 인터페이스 빌더에 의해 자동으로 생성됨

 

 

뷰의 계층 구조

부모(superview) / 자식(subview) 관계

 

서브뷰들은 언제나 부모 뷰의 틀 안에서 보여짐

서브뷰의 크기 변화는(디바이스가 회전하여 뷰의 크기가 변화하는 경우) 부모 뷰와의 관계에 의해 정의됨

그래서 수퍼뷰는 서브뷰의 위치 및 크기를 바꿀 수 있음

 

 

Container View Controller

View Controller 를 역할은 총 2가지로 나눌 수 있다.

  • Content View Controller : 기본적으로 뷰 컨트롤러에게 기대하는 역할(앱 내 데이터를 화면에 보여주는 등) 을 수행하는 뷰 컨트롤러
  • Container View Controller : 직접 무언가를 보여주는 역할은 없으며, 뷰 컨트롤러 간에부모-자식 관계를 형성하여 자신만의 방식으로 자식을 관리하는 역할을 맡는 뷰 컨트롤러

Container View Controller 들이 Content View Controller 들을 관리한다고 생각하기

container view 예시 : UITabBarController, UINavigationController, UIPageViewController

 

container view를 사용하는 이유?
컨테이너 뷰컨의 루트 뷰를  몇 개의 구역으로 나누어 구역별로 특성에 맞게 각각의 뷰 컨트롤러를 두고 따로 관리하면 책임도 분리되고 유지보수도 좀 더 쉬워지기 때문

 

UIContainerViewController 와 같은 클래스는 없고,
Container View Controller 는 하나의 개념이다. 
기존에 존재하는 클래스들을 이용해서 커스텀 구현해야 한다.

 

containerView는 인터페이스 빌더에서만 추가할 수 있는 일종의 프록시 뷰이다.

세그웨이 연결을 통해 컨텐츠를 표시한다.

 

 

 

UIControl클래스의 자식 클래스들

컨트롤 : 컨트롤들은 정보를 표시하고 사용자에게 반응도 하는 뷰들을 뜻한다. ex) UIButton

디스플레이 뷰 : 디스플레이 뷰는 시각적인 반응을 제공한다는 점에서는 컨트롤과 비슷하지만 사용자 상호작용에 반응하지 않음

ex) UILabel, UIImageView

 

 

AlertView와 ActionSheet

사용자에게 긴급하거나 중요한 정보를 표시해주고 어떠한 조치를 할 수 있는 버튼 등을 보여주는 것

UIAlertView : 팝업 상자를 화면에 표시

UIActionSheet : 화면의 아래에서 위로 밀어 올리는 화면을 표시

 

 

View Controller와 View의 관계

View contoller는 view들과 view의 계층구조를 관리하는 역할을 한다.

ViewController 예시

import UIKit

class ViewController: UIViewController {
	@IBOutlet var lblHello: UILabel!
	@IBOutlet var txtName: UITextField! 
    
	override func viewDidLoad() {
		super.viewDidLoad()
	}
    
	@IBAction func btnSend(_ sender: UIButton) {
		lblHello.text = "Hello, " + txtName.text!
	}
}

UIViewConroller를 상속받아 view들을 관리한다.

 

 

View Controller에는 뷰 컨트롤러의 모든 콘텐츠를 둘러싸는 단일 Root View가 있다.

해당 Root View에 콘텐츠를 표시하는 데 필요한 View들을 추가하여 개발한다.

 

 

Design Pattern of GOF(Gang of Four) 

4명의 갱들ㅋㅋ

  • Creational Pattern(생성 패턴) : 객체 생성 관련 패턴. 객체 생성과 조합을 캡슐화하여 특정 객체가 생성되거나 변경되어도 프로그램 구조에 영향을 받지 않도록 유연성을 제공
  • Structural Pattern(구조 패턴) : 클래스를 조합하여 더 큰 구조를 만드는 패턴
  • Behavioral Pattern(행위 패턴) : 객체나 클래스 사이의 알고리즘이나 책임 분배에 대한 패턴. 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 분배하고 객체 사이의 결합도를 최소

 

 

기존 MVC(Model-View-Controller)    vs    Cocoa에서 사용하는 MVC

기존 MVC 패턴

view의 조작이 model을 변경하려면 controller를 거쳐야 하지만,
model의 변경이 view에 적용되는건 model이 직접 한다.

 

 

Cocoa MVC 패턴

 재사용성을 강화하기 위해 model과 view 객체를 서로 분리하여 

 model의 상태변화에 대한 notification들은 controller를 통해 view로 전달되게 만들었다.

  • controller : 뷰 객체와 모델 객체 사이에서 중개자 역할(UI 로직)
  • view : 사용자가 보는 부분으로 스스로 그리는 방법을 알고 있으며 사용자 동작에 반응
  • model : 데이터와 데이터를 조작하고 처리하는 로직을 정의

 

 

MVVM(Model-View-ViewModel)

MVVM은 View의 개발을 Model(비즈니스 로직) 개발과 분리하여 뷰가 특정 모델 플랫폼에 의존하지 않도록 하는 소프트웨어 아키텍처 패턴이다.

Cocoa MVC 패턴과 비슷한 것을 볼 수 있다.

 

 

HIG(Human Interface Guidelines)

apple에서 만든 모든 Apple 플랫폼에 적합한 환경을 설계하는 데 도움이 되는 지침과 모범 사례가 포함된 문서이다.

https://developer.apple.com/design/human-interface-guidelines/

 

Human Interface Guidelines - Human Interface Guidelines - Design - Apple Developer

Human Interface Guidelines The HIG contains guidance and best practices that can help you design a great experience for any Apple platform. Featured Foundations Understand how fundamental design elements help you create rich experiences. Foundations Patter

developer.apple.com

여기에 들어가보면 어떻게 하면 사용자에게 조금 더 좋고 편하게 UI를 제작할 수 있는가에 대한 리소스와 디자인에 대한 정보들이 있다.

 

iOS Design 차별성

  • Clarity(명확함) : 보기 좋게, 기능이 명확하게 드러나도록, 중요한 요소를 강조
  • Deference(존중) : 전체 화면을 활용하여 컨텐츠가 부각되도록 함. 베젤이나 그라데이션,그림자 등을 최소화해서 화면이 밝고 가볍게 느끼도록 함
  • Depth(깊이) : 레이어와 모션을 통해 계층 구조를 표현. 특정한 동작에 의 해 컨텐츠가 손실되지 않도록 함. 보고 있거나 이동하려는 화면의 깊이감을 느끼도록 함

 

iOS 디자인 원칙

  • 미적 무결성(Aesthetic Integrity)
  • 일관성(Consistency)
  • 직접 조작(Direct Manipulation)
  • 피드백(Feedback)
  • 은유(Metaphors)
  • 사용자 제어(User Control)

 

 

 

 

출처 : iOS프로그래밍실무(22-1학기)한성현교수 강의 내용 변형 및 요약

참고 : https://woozzang.tistory.com/145

반응형

'프로그래밍 > Swift' 카테고리의 다른 글

RESTful과 OpenAPI  (0) 2022.05.16
TableView  (0) 2022.05.13
간단한 앱 만들기 실습  (0) 2022.04.16
Swift 문법 복습5  (0) 2022.04.11
Swift 문법 복습4  (0) 2022.03.29
Comments