2024/10 8

iOS 앱개발 본캠프 3일차 TIL - 팀프로젝트 테이블 뷰 구현하기

오늘은 팀 프로젝트에서 내가 맡은 부분인 테이블 뷰 구현을 시작하였다.이렇게 생긴 화면을 구현하는 것이 목표이다. 물론 내가 할 것은 테이블 뷰이므로 탭 메뉴 아래 부분만 구현 하면 되고 나머지 부분은 다른 팀원이 구현한 화면에 내가 구현한 테이블뷰가 들어가는 형태이다.처음엔 간단하게 테이블 뷰 안에 테이블 셀을 넣고, 테이블 셀 안에 이미지뷰와 텍스트필드를 넣은 뒤 화면이 출력 되는지부터 보고자 했다.cmd + shift + L을 써서 해당 오브젝트드를 스토리보드에 드래그앤 드롭하여 추가하였고 IBOutlet으로 연결하였다. 그리고 테이블뷰에 필요한 delegate와 datasource 설정도 해준 뒤, 임시로 출력해볼 값들을 간단하게 변수로 선언을 하였다.goal 변수는 텍스트 필드에 띄울 값이고 g..

iOS 앱개발 본캠프 2일차 TIL - 팀프로젝트 깃헙 연결 도전기

오늘은 코딩을 하기전에 깃헙을 연결해 브랜치 설정을 하는 작업을 했다.Git? GitHub? Branch?깃(Git)은 소스코드의 변경 이력을 추적하고 관리할 수 있으며 이전 버전으로 쉽게 되돌릴 수 있고, 여러 개발자가 동시에 작업할 수 있으며 브랜치를 만들어 관리할 수 있게 만들어 주는 형상관리 도구이다. 그리고 형상관리 도구는 소프트웨어를 개발하는 과정에서 발생하는 변경사항을 체계적으로 관리하기 위한 도구이다.따라서 깃을 잘 활용한다면 여러 사람과 협업하는데 큰 도움이 될 뿐만 아니라 프로젝트 코드의 유지관리도 용이해질 것이다. 오늘 사용한 깃헙(GitHub)이 바로 이런 깃을 저장하고 관리할 수 있게 해주는 웹 기반 플랫폼이다.원격 저장소와 로컬 저장소그리고 깃을 다루다 보면 원격 저장소와 로컬 ..

iOS 앱개발 본캠프 1일차 TIL - 간단한 팀프로젝트와 와이어프레임

오늘은 iOS 앱 개발 부트캠프의 첫 날이어서 간단한 오리젠테이션 후 팀프로젝트를 진행하였다. 본캠프의 첫 주이므로 간단한 자기소개 어플을 만드는 팀 프로젝트를 진행했다.미션은 정해져 있으니 팀명과 팀장, 어플의 세부 내용들에 대한 아이디어 회의를 진행하였다.큰 틀을 잡기 위해 여러 레퍼런스를 가져와 앱 구성에 대한 아이디어를 주고 받았다. 자기소개를 하는 간단한 어플이므로 여러 앱 디자인에 대해 이야기를 주고 받았는데 최종적으로는 다음과 같은 기능을 구현하기로 하였다.메인 화면에서 몇 개의 탭 메뉴해당 탭 메뉴들의 하위 화면을 pageViewController를 이용해 스와이프 하며 이동하는 화면하위 화면의 각 내용들은 테이블 뷰로 구성해 스크롤 하여 탐색팀 개개인에 대한 소개는 present 기능을 ..

TIL 18일차 - 간단한 비디오 앱 도전2

저번에 이어서 이번엔 비디오 플레이어를 커스텀 해보기로 했다.비디오 플레이어의 커스텀에는 재생/일시정지 버튼 커스텀, 되감기/빨리감기 기능 커스텀, 비디오 재생 완료 이벤트 처리, 비디오 진행 상황 표시, 비디오 재생 품질 선택, 자막 추가, 제스처 추가 등 다양한 기능이 있다.이 중에서 처음으로 해본 것은 비디오 재생 완료 이벤트 처리이다. 왜냐하면 재생이 완료 되었을때 처음으로 돌아가 무한 반복을 만든다던가,  다음영상을 재생한다거나 다양한 기능을 추가시킬 수 있을 것 같았기 때문이다.영상 반복을 해보자처음엔 간단하게 재생 중인 영상이 끝나면 처음으로 돌아가 다시 재생하는 이벤트 처리를 해보면서 이벤트 처리에 대한 감을 익혀보려고 한다.1.  알림(Notification) 등록하기영상을 재생해주던 A..

TIL 17일차 - 간단한 비디오 앱 도전1

오늘부터는 간단한 비디오 앱을 도전해보려고 한다.예전에 안드로이드 스마트폰을 쓸 때 mxplayer라는 앱이 있었는데 동영상 탐색, 더블 터치로 초단위 건너뛰기, 왼쪽 화면 드래그로 화면 밝기 조절, 오른쪽 화면 드래그로 볼륨 조절, 핀치줌으로 확대 및 축소, 그리고 화면에 맞게 영상 늘이기 등 다양한 기능을 터치 몇 번으로 가능하게 한 편리한 어플이었다.지금은 기능이 엄청 많아져서 다 열거할 수도 없을 정도지만 내 기억 속 간단한 기능들은 아마 따라 구현 가능하지 않을까 싶어서 도전해보려고 한다.일단 영상 재생부터 해보자처음엔 일단 비디오 파일을 재생할 수 있는지부터 테스트 해보았다. 비디오 파일을 재생할 수 있는지부터 확인하려고 한다.1.  비디오 관련 프레임 워크 import 하기가장 먼저 해야할 ..

TIL 16일차 - 자료 구조

오늘은 자료 구조에 대해 공부하였다. 나중에 개발자로써 무언가 개발을 하기 위해선 자료 구조와 알고리즘의 개념에 대해 확실히 이해해야 한다는 말을 들었기 때문이었다. 자료 구조란?자료 구조는 데이터를 효울적으로 저장하고 조작하는 방식을 말한다. 데이터에는 다양한 종류가 있기 때문에 그에 맞는 연산을 보다 빠르고  효율적으로 수행하기 위해 자료구조 방식이 사용된다.전통적인 자료구조에는 배열(Array), 연결 리스트(Linked List), 스택(Stack), 큐(Queue), 트리(Tree), 그래프(Graph), 해시 테이블(Hash Table), 힙(Heap) 등이 있으며 이에 대한 내용은 다음 블로그를 참고 하였다.https://bnzn2426.tistory.com/115 자료 구조(Data Str..

TIL 15일차 - 뷰컨트롤러와 프로토콜

저번에 네비게이션 컨트롤러와 뷰컨트롤러를 실습하면서 해결 못하던 문제를 해결했다. 네비게이션 바의 Back 버튼을 누른 뒤 다시 두번째 화면으로 넘어가면 뷰컨트롤러에 값이 초기화되어 없어져있던 문제 말이다.delegate를 사용해 두번째 뷰컨트롤러에서 입력받은 데이터를 첫번째 뷰컨트롤러로 넘기려고 했던건데, 이 네비게이션 바의 Back 버튼은 segue를 호출하지 않고 그냥 화면을 닫기만 하기 때문에 데이터를 넘기지 않은 것이라고 한다.그래서 이 Back 버튼을 눌렀을때 값을 넘겨주는 코드를 썼다. override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) if se..

TIL 14일차 - 네비게이션 컨트롤러와 테이블뷰

오늘은 입력받은 데이터를 테이블 뷰로 띄우는 것을 연습하였다.import UIKitprotocol SecondViewControllerDelegate: AnyObject { func passDataBack(_ data: String)}class SecondViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var receivedDataLabel: UILabel! @IBOutlet weak var dataTextField: UITextField! @IBOutlet weak var tableView: UITableView! weak var delegat..