[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)으로 놓고,..
[CoreFoundation] CGPoint, CGSize, CGRect
·
📱 iOS/Swift
학습 목표View의 위치와 크기를 결정하는 방법CGPointCGSizeCGRect학습 내용View 위치와 크기 결정뷰를 그리기 위해선, 위치 결정이 필요함뷰 위치 결정에서 CG로 시작하는 3가지가 필수적인 존재뷰컨트롤러에 있는 self.view (화면에서의 루트 뷰)를 제외한나머지 SubView들은 모두 부모 UIView의 좌측 최상단에서 (x, y)만큼 움직여 그림또한, 어느 크기만큼 그릴 것인지에 대한 Width, Height가 필요함x, y, width, height 모두가 필요한데, CG로 시작하는 3가지가 이 4개를 다루고 있음(x, y) 좌표를 설정하는 CGPointCoreFoundation - CFCGTypesCGPoint 구조체는 x, y를 갖고 있다.소들님 블로그 봤을 땐, x와 y의 타..
[24년 8월 우아한테크세미나] 생성AI로 '우리'가 더 똑똑해지기
·
🎸 기타/세미나
https://www.youtube.com/live/v2icwh-nyl4?si=f9Dvwbjcgg0m6maQ오늘 저녁 무면서 이 세미나를 봤는데,요즘 AI 프롬포트에 관심이 많던 나에게 좋은 주제같아서 정리해보았다. (참고: 아래 내용은 영상에서 말하는 '3가지 스텝'이 아닌, 제 주관으로 유용해보이는 것만 적었습니다)1. 프롬포팅 먼저 하기 (36:38)- GPT를 전문가로 빙의 시켜줌 (실존하는 전문가로 해도 됨)- 전문가로 만들었다면, 내가 요청할 작업을 어떻게 해결해 나가는지 '과정'을 물어보기2. 지피티는 우리에게 질문을 안 하려 함 (41:45)- (발표자 추측) GPT가 질문을 하면 API 비용 증가 때문이다- 우리가 원하는 것에 대해 GPT가 더 잘 답변할 수 있게, 우리가 원하는 바를 G..
[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” 아이콘과 ..
[Swift] async-await & concurrency
·
📱 iOS/Swift
공부한 개념💡 Task, async-awaitTaskSwift - Swift Standard Library - Concurrency - Task공식문서 링크비동기 작업 단위작업을 넣어주면 백그라운드에서 작업 수행 가능한 비동기 컨텍스트 사용Swift 5.5 버전 때, async-await와 같이 등장했고 함께 쓰임DispathcQueue.global().async와는 조금 다름 (밑에서 설명)Task vs DispatchQueue.global().async둘 다 비동기 스레드에 작업을 할당해서 처리하는 역할 + 스레드 풀 방식둘은 뭐가 다를까 ?TaskSwift에 포함별도의 import 필요 XConcurrency 모델의 고수준 모델[중요] 동기 함수에서 async-await 사용 시, Task 클로저..
[네이버 부스트캠프] 챌린지 3주차 KPT 회고록
·
✍🏻 회고록
이번 주 요약👍 Keep미션을 수행하면서 강점으로 작용했고,계속해서 지속하고 싶은 긍정적인 점을 작성문제 이해 & 설계를 잘하자 → 1, 2주차 회고에도 적었는데, 이번에도 잘 유지한듯미션이 이해가 안 되면 공부를 하고 다시 보자 → 미션 내용에 대한 개념을 잘 모르면서 풀려하면 오히려 시간이 더 걸리고, 나중에 설계를 갈아엎는 일이 발생함 → 미션과 관련한 CS 복습 후 문제에 접근함이번에 Swift 문법에 대해 깊이 학습했음 → 열거형을 굉장히 많이 다루어 보았고, Error 프로토콜을 상속받아 예외처리도 열심히 해봄 → DispatchQueue, OperationQueue와 같이 Swift에 있는 동기, 비동기를 위한 큐들을 다루어봄동기-비동기, 직렬-동시성에 대한 공부를 깊게 함 → 같이 개선하..
[Swift] LocalizedError 프로토콜로 예외처리 잘하기
·
📱 iOS/Swift
공부한 개념catch문 덕지덕지일 때 해결하기LocalizedError (errorDescription, failureReason, recoverySuggetsion, helpAnchor)error.localizedDescriptionenum MyError: LocalizedError { case alreadyInit // 이미 Init 했음 case mkdirFailed // 디렉토리 생성 실패 case readFailed // 파일 내용읽기 실패 case writeFailed // 파일 쓰기 실패 case compressionFailed // 압축실패 case hashingFailed // 해싱하기 실패}case .Init: do { try myini..