본문 바로가기

iOS-Study

(23)
iOS Study : 12주차 - 얼굴앱 만들기 얼굴의 두개골을 그려낼 커스텀 UIView 생성 FaceUIView.swift import UIKit //UIView의 서브 클래스인 FaceView //얼굴의 두개골을 그려내기 위해 커스텀한 UIView class FaceView: UIView { override func draw(_ rect: CGRect) { //얼굴 반경 let skullRadius = min(bounds.size.width, bounds.size.height) / 2 //bounds = 나의 좌표시스템 안에서 그릴 직사각형 //얼굴 중심 let skullCenter = CGPoint(x: bounds.midX, y: bounds.midY) //startAngle, endAngle은 라디안으로 표기하기 때문에 π로 표시 / clo..
iOS Study : 11주차 - 계산기 클론 코딩 디자인 코드 ViewController.swift 파일 코드 import UIKit var calculatorCount = 0 class ViewController: UIViewController { @IBOutlet private weak var display: UILabel! private var userIsInTheMiddleOfTyping: Bool = false //MVC가 생성될 때 한번만 호출 override func viewDidLoad() { super.viewDidLoad() calculatorCount += 1 print("Loa ded up a new Calculator (Count = \(calculatorCount))") //루트 대신 Z를 사용 brain.addUnaryOper..
iOS Study : 11주차 - 기초 문법 공부 MVC(Model, View, Controller) 패턴 Model 어플리케이션이 무엇을 말하는지를 말한다. 계산기 앱에서는 계산을 하는 부분 Controller 모델이 스크린에 어떻게 표현될 것인지를 말한다. 기본적으로 모든 컨트롤러에 들어가는 UI 로직 View 컨트롤러의 하위 종속자 컨트롤러가 화면에 무언가를 보여주기 위해 사용 MVC 사이의 관계 Controller 컨트롤러는 모델의 모든 것을 알고 있고 보내고 싶은 요청을 언제든지 보낼 수 있다. 컨트롤러는 사용자에게 모델에 있는 것을 표현하거나 사용자로부터 정보 받아 모델을 업데이트 하는 것이기 때문에 전체적인 통제가 필요하다. View의 경우도 마찬가지이다. 대부분의 뷰와 모델의 연결은 outlet을 통해서 이루어진다. Model 모델과 뷰는..
iOS Study : 10주차 - 오토레이아웃 정리(2) 코드로 오토레이아웃 작업 스토리보드에서 작업할 필요 없이 코드로도 작업이 가능하다. import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() let myFirstView = UIView() //코드로 오토레이아웃 설정시 필수 myFirstView.translatesAutoresizingMaskIntoConstraints = false myFirstView.backgroundColor = .systemPink //밑의 코드에서 view는 스토리보드에서 보여지는 최상단의 뷰를 의미한다. //새롭게 추가하는 뷰는 서브뷰를 뜻하고 위애서 설정한 뷰를 넣으면 된다. self.view.a..
iOS Study : 9주차 - 오토레이아웃 정리(1) 오토 레이아웃 자동으로 레이아웃을 계산하여 그려주는 것 해당 뷰의 x,y의 위치(가로,세로 위치)와 가로,세로의 크기(사이즈)를 앵커를 걸면 자동으로 뷰를 그려줌 아이폰의 기기마다 크기가 다르기 때문에 앵커를 걸면 기기가 바뀌어도 자동으로 위치가 지정됨 Main에서 뷰를 클릭한 후 Option이나 Alt키를 누르면 아래처럼 사이즈가 뜨게 된다. 앵커 거는 법 위에서 앵커를 걸면 아래처럼 선이 생기면서 왼쪽에 앵커를 걸게 되는 것이다. 크기도 위에서 크기 부분에 앵커를 걸면 된다. 위에서 Clear Constraints를 클릭해서 앵커를 전부 없앨 수 있고, Add Missing Constrainsts는 Xcode에서 자동을 빼먹은 앵커를 걸어준다. 위에처럼 가로와 세로의 정중앙에 위치시키는 것도 가능하다..
iOS Study : 8주차 - MVVM 디자인 패턴 MVVM(Model, View, ViewModel) 디자인 패턴 MVVM은 그래픽 사용자 인터페이스(뷰)의 개발을 비즈니스 로직 또는 백-엔드 로직(모델)으로부터 분리시켜서 뷰가 어느 특정한 모델 플랫폼에 종속되지 않도록 해주는 패턴이다. 구성 요소 모델(Model) 데이터, 네트워크 로직, 비즈니스 로직 등을 담으며 데이터를 캡슐화하는 역할을 맡고 있다. View ,ViewModel에 대한 신경은 쓰지 않는다. 데이터를 어떻게 가지고 있을지만 걱정하며, 데이터가 어떻게 보여질 것인지에 대해서는 고려하지 않는다. 뷰(View) 사용자가 화면에서 보는 것들에 대한 구조, 배치, 그리고 외관에 해당하는 내용을 다룬다. Model을 직접 알고 있어서는 안된다. View는 ViewModel로부터 데이터를 가져와..
iOS Study : 8주차 : 문법 세부 정리 - 옵셔널 체이닝(Optional Chaining) 옵셔널 체이닝(Optional Chaining) 옵셔널 체이닝이란 옵셔널일 수 있는 인스턴스 내부의 프로퍼티, 메서드, 서브 스크립트를 매번 nil인지 아닌지 체크를 하지 않고 최종적으로 원하는 값, 혹은 nil인지 판단하는 방법이다. 간단한 예시 옵셔널 체이닝을 사용하지 않았을 때 class Family { var child: Child? } class Child { var name: String? } var family: Family? = Family() var child: Child? = Child() child?.name = "아들" func noOptionalChaining(child: Child?) { if let child = child { if let name = child.name { p..
iOS Study : 7주차 - Swift 공식 문서 정리 Enumerations and Structures(열거형과 구조체) 열거형을 만들기 위해서는 enum을 사용한다. rawValue를 사용하여 정수값을 가지게 할 수도 있다. rawValue를 통해 초기화도 가능하다. 이 때 rawValue가 case에 해달하지 않을 수 있기 때문에 rawValue를 통해 초기화 한 인스턴스는 옵셔널 타입이다. switch문에 모든 열거형 케이스를 포함한면 default를 작성할 필요가 없다. enum Rank: Int { case ace = 1 case two, three, four, five, six, seven, eight, nine, ten case jack, queen, king func simpleDescription() -> String { switch sel..