[UIView] frame & bounds (2)
·
📱 iOS/UIKit
아래 좌표계가 나와서 본편의 사진은 소들님 걸로 사용하겠습니다사진 출처: 개발자 소들이학습 목표frame과 bounds 차이 다시 알아보기bounds를 왜 쓰는 건지 알아보기학습 내용frame vs bounds frameboundsorigin (x, y) 기준점Super View의 좌표계자신의 좌표계size (width, height) 기준점View 영역 모두를 감싸는 사각형View 영역 자체지난 주에 하나하나 실습하며 알아봤던 각각의 특징이다.이제 위치 (x, y)를 변경할 때, frame과 bounds가 어떻게 달라지는 지 알아보자frame의 origin 값을 변경하는 경우bounds가 아닌 frame의 origin은 SuperView의 영향을 받음즉, secondView가 바뀌면, thirdView..
[UIView] frame & bounds (1)
·
📱 iOS/UIKit
본 시리즈는 소들이 블로그를 보고,실습을 하며 정리한 글입니다.학습 목표CGRect의 origin, size 두 프로퍼티가 UIView에서 어떻게 쓰이는지UIView의 프로퍼티 frame과 bounds 차이 공부학습 내용Super View 개념여태 나는 뷰컨트롤러가 갖는 뷰, 즉 루트 뷰라고 생각했는데그냥 부모 뷰를 이야기 하는 것이었음뷰는 계층 구조로, 뷰안에 뷰를 넣을 수 있는데second View의 Super View는 firstView인 것.UIView의 frameframe: CGRect에는 origin과 size가 있음origin = (x, y) 좌표, size = (width, height) 크기frame의 origin (x,y)Super View의 원점(좌측 최상단)을 (0, 0)으로 놓고,..
[UIKit] openURL vs SFSafariViewController, 앱 사용 중에 URL 페이지 띄워주는 방식의 차이 알아보기
·
📱 iOS/UIKit
학습 목표앱 사용 중, 특정 URL을 띄워줘야 하는 경우 어떻게 할 지 살펴본다.openURL 방식으로 URL 연결하면 어떤 특징이 있는지 살펴본다.SFSafariViewController 클래스에 대해 살펴본다.openURL로 URL을 띄워주는 것과SFSafariViewController 클래스로 URL 띄우는 것에 차이점을 살펴본다.학습 내용서론앱 사용 중에 특정 URL을 띄워줘야 하는 경우가 생겼다.앱 내에서 어떻게 URL을 띄우는지 알아보자.개인정보처리방침, 앱 사용설명 등등 노션으로 라우팅 되는 경우가 많았는데, 이 주제에 대한 내용이 될 것 같다.openURL로 URL 라우팅UIApplication.shared.open(_ url: URL, ..) 메소드를 이용한 방식이다.@IBAction f..
[UIKit] UIAlertController & UIAlertAction
·
📱 iOS/UIKit
학습 목표Alert 창을 띄워 사용자에게 알림을 줘보자학습 내용현재 뷰컨에서 Alert 띄우기 이론현재 뷰컨트롤러에서 Alert 창을 띄우고 싶으면 다음 단계를 따라야 한다.UIAlertController 인스턴스 생성UIAlertAction 생성 후 1번 인스턴스에 addAction()으로 넣어줌현재 뷰컨트롤러에서 self.present()로 1번 인스턴스를 띄워줌Alert 띄우기 실습resetButton을 눌렀을 때 동작하는 메소드이다.@IBAction func resetButtonTapped(_ sender: Any) { // 이론의 1번 단계 let alertController = UIAlertController(title: "게임 초기화", message: "모든 설정을 지우려..
[UIKit] UIViewController LifeCycle (탭바와 함께)
·
📱 iOS/UIKit
학습 목표UIViewController LifeCycle을 공부한다.UIViewController가 사라지고, 띄워질 때 어떤 메소드가 동작하는지 실습해보며 익히기학습 내용UIViewController LifeCycle 이론이 챕터에서는 UIViewController가 태어나서 죽는 과정에 어떤 메소드가 동작하는지 보는 것위 사진은 애플 공식문서에 기재되어 있다뷰가 태어나서 (Appearing - Appeared), 죽는 (Disappearing - Disappeared) 과정에 어떤 메소드가 동작하는지 설명되어 있다.참고로 태어나기 전에는 loadView() → viewDidLoad()가 동작한다.태어나기 전,func loadView() {}view가 곧 태어날 거임func viewDidLoad() {..
[UIKit] UIButton 타입과 메소드
·
📱 iOS/UIKit
학습 목표당연하게 써온 UIButton들 내부 프로퍼티, 메소드 톺아보기학습 내용UIButton 타입아래 실습에서 사용될 코드let myButton = UIButton(type: ??).then { $0.backgroundColor = .systemOrange $0.layer.cornerRadius = 12}기본 타입system (.system):기본적인 시스템 스타일의 버튼iOS 디자인 가이드라인에 맞는 기본 버튼텍스트와 터치 피드백(애니메이션 효과)을 제공커스텀custom (.custom):기본적인 스타일이 적용되지 않음버튼의 배경 이미지, 텍스트, 색상 등을 모두 커스터마이징 가능i 인포 나타내기detailDisclosure (.detailDisclosure):작은 원형 “i” 아이콘과 ..
[UIKit] UISegmentedControl 사용해보기
·
📱 iOS/UIKit
학습 목표UISegmentedControl 개념 알기UISegmentedControl 실습 및 꾸며보기toduck 프로젝트에 사용되는 View 만들어보기학습 내용UIResponder - UIView - UIControl - UISegmentedControlUISegmentedControl의 기본값Image선택된 버튼의 BackgroundImage선택되지 않은 버튼의 BackgroundImage버튼 사이의 DivderImageText선택된 버튼의 TextColor & FontSize선택되지 않은 버튼의 TextColor & FontSizeUISegmentedControl 꾸미기class MainViewController: UIViewController { private let segmented..
iOS 네트워크 통신 (1/3) - 개요 (URLSession, Alamofire, Moya)
·
📱 iOS/UIKit
학습 목표이번 시간에는 iOS에서 사용되는 네트워크 통신의 수박 겉핥기 개요서버와 통신할 때 사용되는 URLSession, Alamofire 각 특징 알기URLSession과 Alamofire 차이 알기Moya 특징/동작 알기학습 내용URLSession과 AlamofireURLSessionAn object that coordinates a group of related, network data transfer tasks.네트워크 데이터 전송과 관련한 일을 처리하는 클래스애플이 제공하는 APIURL Loading System표준 IP 혹은 유저가 만든 커스텀 프로토콜을 사용하여URLs에 의해 구분되는 자원을 접근하게 함→ 비동기적으로 진행되므로 통제해줘야 하는데 이를 URL Session이 해줌하나의 UR..
[프로토콜] UITextFieldDelegate 공식문서 뜯어보기
·
📱 iOS/UIKit
학습 목표 Delegate 디자인 패턴을 익힘 UITextFieldDegate 프로토콜을 익힘 학습 내용 Delegate 디자인 패턴 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 것 Delegate는 프로토콜로 구현됨, *(Delegate) = 위임하다 UITextField NSObject - UIResponder - UIView - UIControl - UITextField 위 사진의 예로 이번 UITextFieldDelegate를 설명하겠다. UITextField에 글자를 입력 바꾸기 버튼을 누름 UILabel에 1번에서 작성한 글자가 보이게 됨 UITextFieldDegate @MainActor protocol UITextFieldDelegate UITextField에서 발생하는 이..
[UIKit] Interface Builder Outlet 연결 Strong || Weak
·
📱 iOS/UIKit
View는 스토리보드 코드간의 연결을 위해 @IBOutlet을 통해 해결한다. 스토리보드에서 Ctrl + 좌클릭으로 UI 객체를 코드에 끌어놓으면 다음과 같이 자동으로 생성해준다. 위 사진에서 알 수 있는 점 1. Outlet 연결됨 2. 변수 명을 입력할 수 있음 3. Storage를 'Strong'과 'Weak' 중에 고를 수 있고, Default는 Weak임' 4. UI 객체는 내가 Ctrl + 좌클릭으로 가져온 Type으로 자동 선정됨 변수 명을 입력하면 알아서 '@IBOutlet weak var myLabel : UILabel!'로 선언된다. 3번에서 말한 Strong과 Weak는 강한 참조, 약한 참조로 ARC와 관련이 있다. 클래스의 인스턴스는 힙 영역에 저장되고, 이는 ARC에 의해 참조 ..