본문 바로가기

iOS61

[iOS] CGPoint, CGSize, CGRect 화면에 View를 그릴 때 필요한 정보에는 무엇이 있을까? 일단 View를 화면의 어느 위치에 놓을지를 결정해야 한다. 그리고 그 위치에서 크기를 어느 정도로 할지를 결정해야 한다. 정리하면, View를 그리기 위해 필요한 정보에는 View의 시작 위치에 대한 (x, y) 좌표가 필요하고 (x, y) 좌표에서 어느 크기만큼 그릴 건지 width, height에 대한 정보가 필요하다. View를 그릴 때 이러한 정보들을 담아두기 위한 구조체들을 살펴보자. CGPoint - View의 시작 위치 CGPoint 구조체는 2차원 좌표계의 점을 포함하는 구조체이다. CGPoint는 다음과 같의 정의되어 있다. CGPoint 구조체 안에는 x, y라는 변수가 선언되어 있다. 두 변수 안에 원하는 값을 넣어 View.. 2022. 6. 22.
[iOS] UITextFieldDelegate 텍스트 필드 객체의 텍스트 편집 및 유효성 검사를 관리 하는 optional 메서드 집합이다. Overview 텍스트 필드는 중요한 변경 사항에 대한 응답으로 delegate의 메서드를 호출한다. 이러한 방법을 사용하여 사용자가 입력한 텍스트를 확인하고 키보드와의 특정 상호 작용에 응답하며 전체 편집 프로세스를 제어할 수 있다. 텍스트 필드가 첫 번째 응답자(first responder)가 되어 키보드(또는 할당된 input view)를 표시하기 직전에 편집이 시작된다. 편집 프로세스는 다음과 같다 first responder가 되기 전에, 텍스트 필드는 delegate의 textFieldShouldBeginEditing(_:) 메서드를 호출한다. 이 메서드를 사용하여 텍스트 필드의 내용 편집을 허용하거.. 2022. 4. 17.
[iOS] Firebase를 활용한 로그인 Firebase란? 모바일 서버를 개발하기 위해서는 인증, 데이터베이스, 푸시 알람, 스토리지, API등 모든 것을 개발해야 한다. 하지만 모바일 서버는 이런 모든 것을 구성하는데 구성하는 범위가 매번 새로운 앱들과 차이 나지 않기 때문에 리눅스를 설치하고, FTP를 설치하고, 데이터베이스를 설치하는 등 이런 반복적인 작업을 앱을 개발 할 때마다 하는 것은 엄청난 시간낭비라고 볼 수 있다. Firebase는 이 모든 플랫폼을 프로젝트 구축 시 자동적으로 만들어 준다. 또한 서버를 구축하기 위해서 리눅스 명령어를 알 필요도 없으며 도메인을 구입할 필요도 없고 개발하는 동안에는 서버를 구입할 필요도 없다. Firebase에는 인증, 데이터베이스, 스토리지, 원격 구성, 푸시 알람등의 대표적인 기능이 있는데 .. 2022. 1. 13.
[iOS] URLSession을 사용한 통신 URLSession은 iOS 앱 통신에서 서버와의 데이터 교류를 위해서 사용되는 API이다. URLSession은 HTTP를 포함한 몇 가지 프로토콜을 지원하고, 인증, 쿠키 관리, 캐시 관리 등을 지원한다. 기본적으로 request, response 구조를 가지고 있다. URLSessionConfiguration URL 세션에 대한 동작 및 정책을 정의하는 객체이다. Configuration을 생성할 때는 URLSession 정책에 따라 default, ephemeral, backgorund 3가지 형태로 생성할 수 있다. default : 기본적인 session으로 디스크 기반 캐싱을 지원한다. ephemeral : 어떠한 데이터도 저장하지 않는 형태의 세션이다. 쿠키나 캐시를 저장하지 않는 정책을 .. 2022. 1. 11.
[iOS] DispatchSourceTimer를 사용한 타이머 타이머를 기반으로 이벤트 핸들러 블록을 제출하는 디스패치 소스 protocol DispatchSourceTimer DispatchSourceTimer를 사용할 때 사용자는 자신의 객체에 이 프로토콜을 직접 채택하지 않아도 된다. 대신 makeTimerSource(flags:queue:) 메서드를 사용하여 이 프로토콜을 채택하는 객체를 만든다. DispatchSource.makeTimerSource(flags:queue:) 타이머 이벤트를 모니터링 하기 위한 새 디스패치 소스 객체를 만든다. class func makeTimerSource(flags: DispatchSource.TimerFlags = [], queue: DispatchQueue? = nil) -> DispatchSourceTimer [fl.. 2022. 1. 11.
[iOS] UIView.animate를 활용한 애니메이션 처리 어떤 버튼을 클릭했을 때 특정 라벨은 숨기고 특정 라벨은 나타나게 처리할 때 isHidden 속성을 사용하여 처리할 수 있다. isHidden을 사용하여 처리하면 다음과 같이 나타난다. 전체적인 코드는 다음과 같다. enum buttonStatus { case prev case next } class ViewController: UIViewController { @IBOutlet weak var beforeLabel: UILabel! @IBOutlet weak var afterLabel: UILabel! @IBOutlet weak var clickButton: UIButton! var status: buttonStatus = .prev override func viewDidLoad() { super.vi.. 2022. 1. 11.