iOS 프로젝트를 만들면 메인 스토리보드와 AppDelegate.swift, SceneDelegate.swift 파일이 기본 생성되어 있다. UIkit framework에서 delegate는 이벤트를 처리할 수 있는 대리자를 뜻한다. 따라서 AppDelegate는 Application 레벨에서 발생하는 이벤트를, SceneDelegate는 Scene 레벨에서 발생하는 이벤트를 처리한다는 뜻이다. Scene 원래는 하나의 application이 하나의 scene을 가지고 있었기 때문에 이 둘을 구분할 필요가 없었지만 iPadOS가 등장하고 iPad에서 하나의 화면에 여러 application을 실행할 수 있게 되면서 이 둘의 관계가 더이상 1:1이 아니게 되었다. 이렇게 생성되는 이벤트가 어떤 상황에 어떤..
UILabel을 animate 시켜보자. ViewController 사이를 이동할 때, 한 ViewController 안에서 내용에 따라 layout이 달라져야 할 때 UIView.animate로 view를 이동시키는데, 그 중 UILabel은 없어서는 안되는 view이기 때문에 UILabel로 시작하는게 좋을 것 같다. 이런걸 한 번 만들어보자. 쉽게 생각해보자. UIView.animate는 UIView의 최종 상태를 정하는 closure를 통해 animation을 재생한다. 그렇다면 label의 font size를 늘려주면 되지 않을까? UIView.animate(withDuration: 2.0, animations: { label.font = .systemFont(ofSize: 32) }) 모든 U..
이미 블로그에 CollectionView를 가지고 pinterest 형식으로 layout을 만드는 방법을 포스팅 했지만 해당 포스팅은 storyboard와 코드를 조합해서 만들었고, 이번에는 온전히 코드만 가지고 만드는 방법에 대해서 작성한다. 앞서 포스팅 한 UITableView와 유사한 부분이 많은데, CollectionView는 안에 들어가는 cell의 크기와 위치를 정하기가 좀 더 자유롭다. Layout 자유로운 cell의 위치와 크기는 UICollectionViewLayout이라는 Layout 객체로 관리할 수 있다. pinterest layout은 고정된 width와 유동적인 height를 가지는 cell을 일정한 간격으로 띄워서 화면에 보여주며, 불규칙한 모자이크 또는 지그재그로 놓인 벽돌을..
더이상 같은 프로젝트를 가지고 포스팅을 이어나가는게 무리라는 판단이 섰다. 일단 프로젝트 자체도 뭔가 완벽히 기획된 상태가 아니고, 어떤 기능을 배우기 위해서 컨텐츠를 추가하면 그 컨텐츠에 필요한 부가적인 코드를 작성해야 하기 때문에 논점이 흐려진다. 대신 프로젝트는 따로 진행하고 진행하면서 배우게 된 큰 단위의 개념들을 모아서 따로 예제를 만들면서 포스팅하는 방향으로 바꿨다. UITableView UITableView는 스크롤 할 수 있는 row(행)집합을 그린다. 위아래로 스크롤 할 수 있으며, 기본적으로 .plain, .grouped라는 2가지 스타일을 제공한다. plain은 row에 채울 데이터 값이 없어도 table을 그리지만 insetGrouped와 grouped의 경우 필요한 row만 그리고..
회원가입 페이지를 각 항목을 입력하는 화면으로 나눠서 만들고 싶어서 UIPageViewController라는 ViewController를 사용하려 했지만 막상 공부를 해 보니 예상했던 기능과는 조금 다른 용도로 사용하는 것 같다. 먼저 만들고자 하는 회원가입 절차를 생각해보자. 지금까지 만든 회원 정보 중에 처음에 사용자가 입력할 수 있는 부분은 2가지다. 이름은 텍스트로 입력을 받고 프로필 사진은 현재 라이브러리 또는 카메라로 사진을 선택할 수 있도록 한다. 이렇게 입력받은 2개의 데이터를 서버에 있는 데이터베이스에 등록하고 다음번에 로그인 할 때 이 데이터를 불러와서 화면에 그릴 수 있도록 한다. 이미 firebase로 연동을 했기 때문에 정상적으로 회원가입을 하려면 token이 필요하다. 하지만 테..
IOS 프로젝트를 생성할 때 swiftUI와 storyboard 중 하나의 인터페이스를 사용해서 만들 수 있다. swiftUI를 사용할 경우 코드와 canvas로 화면을 구성 하게 되지만 storyboard를 선택하면 GUI환경에서 UI 배치 작업을 할 수 있는 storyboard라는 파일이 생긴다. GUI 환경에서 작업하고 IBOutlet 같은 annotation으로 연결할 수 있지만 속도도 느리고, 화면도 작아서 맥북으로는 원활하게 작업할 수가 없다. 차라리 storyboard를 없애고 코드로 작업할 수 있도록 환경을 바꿔 보자. 먼저 main.storyboard를 삭제한다. 하지만 프로젝트는 아직 main.storyboard를 인터페이스로 알고 있기 때문에 프로젝트 속성으로 들어가서 인터페이스 항목..
Firebase는 구글에서 만든 플랫폼으로, 별도의 서버를 만들 필요 없이 사용자 인증 및 관리를 할 수 있도록 해준다. 일반 이메일 인증 부터 구글 이메일, 애플 아이디 등 다양한 소셜 로그인 등을 지원하고, 공식 홈페이지에서 모든 플랫폼에 대한 상세한 사용 메뉴얼도 제공한다. Cocoapods 동명의 개발 팀에서 만든 dependency management 프로그램이다. mac 터미널에서 사용하는 프로그램으로, framework를 관리한다. 예를 들어 프로젝트에서 GoogleSignIn framework를 사용하려고 한다. google이 제공하는 링크를 찾아서 framework를 다운 받고 프로젝트가 있는 위치로 옮긴 뒤, 프로젝트의 의존성 경로와 plist 등을 직접 수정하는 방법과 cocoapod..
서버에 파일을 저장하고 이 파일을 불러와서 이미지로 사용하는 view를 만들어 보려 한다. 먼저 이미지 파일이 서버에 어떤 식으로 저장되어 있는지 알 필요가 있는데, 인터넷에서 아무 사진이나 검색한 뒤 브라우저에서 정확히 이미지만 보일 때 까지 접근하면 주소창에 이미지의 경로 주소가 나온다. 사실 이것 또한 방법의 차이일 뿐 어떤게 정답이라고 할 수는 없는 부분인것 같다. 위처럼 만들면 데이터 베이스에는 파일이 아니라 파일이 저장된 경로를 저장하고, 실제 파일은 서버가 접근할 수 있는 파일 디렉토리에 저장하는 방법을 채택할 수 있다. 현재 서버와 데이터베이스는 데스크탑에서, IOS 프로젝트는 맥북에서 실행하고 있는데, 예상할 수 있는 이미지 파일 저장 및 로드 구조는 대략 이렇게 된다. 데이터 베이스는 ..
- Total
- Today
- Yesterday
- SOCKET
- mongoDB
- game
- 자료구조
- Java
- C++
- DesignPattern
- C
- ue4
- 운영체제
- SHADER
- ios
- 알고리즘
- 국내여행
- OS
- 수학
- database
- winsock
- scala
- Git
- Spring
- SwiftUI
- swift
- Cocos2d-x
- 드라마
- C/C++
- machine learing
- JSP
- 데이터베이스
- rxswift
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |