생성일: 2021년 9월 24일 오후 10:06화면 회전이나 다양한 iphone device에서도 동일한 위치를 유지하기 위해 사용한다.좌상단이 x,y로 표현했을 때 0,0이다.해당 view의 왼쪽 상단 모서리를 기준으로 그 view의 좌표가 결정된다.오브젝트에 Con
생성일: 2021년 9월 24일 오후 10:06Hugging Priority는 인간인 우리가 큰 건물을 안을 수 없는 것처럼 둘 이상의 제약이 걸려있고 그 두가지를 모두 안을 수 (충족시킬 수) 없을 때 발생한다. 위의 사진 처럼 두 라벨에게 상좌우에 40씩 contr
생성일: 2021년 9월 24일 오후 10:06상하좌우에 constraints 0을 준 붉은색과 갈색 uiview의 모습이다. 갈색 view 바깥 부분에 붉은색 view가 보이는 것을 확인 할 수 있다. Constraints를 줄 때 Constrain to margin
생성일: 2021년 9월 27일 오후 11:40위와 같은 2x, 3x, 기본 이미지를 비교하면 다음과 같다.home50x50@2x.png의 크기home50x50@3x.png의 크기home300.png의 크기스토리보드에 이미지를 넣어보면 위와 같아진다. ( ⌘= 단축키를
생성일: 2021년 9월 28일 오전 12:33코드로 ui를 짜는 법에 대해 알아보자만들고자 하는 객체를 선언하고 view에 추가를 한다.하지만 실행시켜보면 원했던 버튼은 생성되지 않은 것을 알 수 있다.그 이유는 해당 버튼의 크기와 위치를 지정해주지 않았기 때문이다.
생성일: 2021년 9월 29일 오후 9:48계산기 ui 만들어 보기Horizontal stack view를 사용하여 총 5줄의 버튼을 배치 했다.마지막 줄의 버튼의 마지막 버튼의 크기를 위에있는 정사각형 모양의 버튼의 크기로 만들어 주기 위해 우클릭을 하고 드래그를
생성일: 2021년 10월 1일 오후 10:27위와 같이 이미지 뷰 안에 Label(공인인증서라고 적혀있는 것)을 모든 디바이스마다 일정한 위치에 위치하고자 한다.이때 첫번째로 중요한 것은 image view를 view에 embed 시켜야한다.(constraint mu
생성일: 2021년 10월 5일 오후 10:19Cocoa Touch Class 파일 만들기View 또는 Empty 파일 만들기 (파일명은 1번의 파일명과 동일하게)View의 identity inspector에서 1에서 만든 class와 연결CustomKeyboard.x
생성일: 2021년 10월 7일 오후 10:20누르면 해당 부분이 확장되서 보이는 구조를 구현하고자 한다.table view와 cell을 생성한다.tableView를 만드는데 필요한 프로토콜과 함수들을 생성했다.tableView Cell을 위한 class는 다른 파일을
생성일: 2021년 10월 10일 오후 9:32왼쪽 뷰컨의 버튼을 클릭하면 오른쪽 뷰컨처럼 작은 버튼 3개가 생기게 만드는 것이 목표이다.버튼을 눌렀을때 우측의 VC로 이동하도록 Segue를 설정한다.이동한 VC의 배경사진을 투명하게 만들기 위해 상위 View의 배경색
생성일: 2021년 10월 13일 오후 10:14UIView로 막대모양 5개를 만들고 이들을 하나의 View에 임베드한 상태이다.Equal Width와 좌우 20의 간격, 회색 뷰와 막대 뷰의 하단 간격 0을 주어 아래부분은 붇어 있게하고 막대의 길이는 조절 할 수 있
생성일: 2021년 10월 14일 오후 8:52사진의 일부분이 사선으로 잘린 형태가 가능하도록 Custom View를 만들고 Storyboard와 연결해보자우선 Cocoa Touch Class 파일을 만든다. (여기서는 UIImageView)해야할 순서는 다음과 같다.
생성일: 2021년 11월 18일 오후 8:57button과 이것을 감싸는 uiview를 만들고 가운데 정렬을 한 뒤 코드와 연결했다.버튼과 뷰의 곡률을 설정한 뒤 IBAction으로 버튼을 연결했다.가운데 정렬이 된 constraint의 constant를 변경하여 버
생성일: 2021년 11월 19일 오후 9:31새로운 VC를 만들고 팝업창 뷰를 만들었다. 이때 회색 뷰(내부의 이미지와 Labe, button을 감싸기 위해 만든) 에 가운데 정렬을 제외한 어떠한 Constraint를 주지 않고도 에러를 없앨 수 있다. 오토레이아웃
생성일: 2021년 12월 30일 오후 7:14위와 같이 label과 textfield를 배치하였다. (전체 드래그 후 상하좌우 20씩 주고 버튼 아래의 contraint만 제거하여 오류 제거, 그리고 20씩 적용된 제약을 필요한 부분에는 5로 수정)붉은 색 label
생성일: 2022년 1월 1일 오후 9:21Main.storyboard에 위와 같이 테이블 뷰, 텍스트 뷰, 버튼을 정렬시켜 채팅 앱의 기본 구조를 만든다..xib 파일을 생성하여 말풍선 이미지와 텍스트 뷰를 만들고 정렬시킨다.문제점텍스트 뷰가 커질수록 (글자 수가 많
생성일: 2022년 1월 2일 오후 3:12Adaptivity and Layout - Visual Design - iOS - Human Interface Guidelines - Apple Developer아이폰을 세운 상태(Portrait) ⇒ regular heig
생성일: 2022년 1월 6일 오후 11:47인스타그램 클론 프로그래밍 첫 단계스토리보드를 사용하지 않기로 했기 때문에 xcode에서 프로젝트를 만들고 자동으로 생기는 viewcontroller가 아닌 내가 새로 만든 MainTabController.swift가 roo
생성일: 2022년 1월 6일 오후 11:47화면 하단에 탭바를 만들기 위한 과정인스타그램에는 위의 사진과 같은 탭바를 사용한다 ⇒ 총 5개의 ViewController 필요따라서, MainTabController를 제외한 5개의 뷰컨트롤러를 생선한다.여기서 view
생성일: 2022년 1월 6일 오후 11:47인스타 그램에서의 탭바 첫 항목인 Feed 화면을 구성하기 위해 CollectionView를 사용한다.FeedController가 UICollectionViewController를 상속 받게 한다.UICollectoinVie
생성일: 2022년 1월 10일 오후 11:32로그인, 회원가입 화면을 보면 동일한 모양의 textField와 Button, 배경색이 반복되는 것을 확인 할 수 있다.이것들을 전부 하나하나 코드로 짜서 구현할 수 있겠지만 당연히 반복되는 코드를 작성하는 것은 비효율적이
생성일: 2022년 1월 17일 오후 10:45콜렉션 뷰를 활용하여 프로파일 화면을 구성하고자 한다.프로필 화면은 유저가 올린 게시물을 콜렉션뷰로 보여주고 상단에는 본인의 사진과 여러 정보들을 보여주어야 한다. ⇒ 상단은 CollectionView의 헤더로 구성한다.P
생성일: 2022년 1월 18일 오후 10:21ProfileController.swift에서 fetchUser() 함수를 생성하여 유저 정보를 가져오도록 한다. 이를 위해 UserService라는 구조체를 생성한다.UserService는 Firebase에서 유저 정보(
생성일: 2022년 1월 21일 오후 10:26기존에 로그인되어 있던 사람이 로그아웃하고 다른 계정으로 로그인을 했을 때 기본에 로그인되어있던 계정으로 접속이 됨이유기존 코드에서는 ProfileController.swift 의 fetchUser() 함수가 현재 사용자의
생성일: 2022년 1월 23일 오후 10:10Search 화면에 검색 기능을 추가하여 사용자가 이름을 검색하면 해당 이름의 다른 유저들을 화면에 보여주도록 하자private let searchController = UISearchController(searchResu
생성일: 2022년 1월 28일 오후 11:42sns의 기본인 사진 업로드를 위해 사용자가 기기의 앨범에서 사진을 선택할 수 있도록 구현해본다.이를 위해 Cocoapod 에서 YPImagePicker 패키지를 다운받는다.extension을 활용하여 UITabBarCon
생성일: 2022년 1월 29일 오전 1:06기본적으로 apple에서는 TextView에서 placeholder를 설정하는 기능을 제공하지 않는다. ⇒ 커스텀으로 제작 해야한다.텍스트 뷰에 “Enter caption” 이라는 placeholder 을 넣고, 사용자가 글
생성일: 2022년 2월 3일 오후 11:20사용자가 feed화면에서 스크롤을 하면 새롭게 post들을 firebase에서 받아와서 화면에 보여주도록 한다.UIKit에서 제공하는 UIRefreshControl 클래스를 이용하여 refresher 객체를 생성한다. ref
생성일: 2022년 2월 11일 오후 10:15사용자들의 댓글들을 보여주는 Collection View에서 Cell의 크기를 댓글의 길이에 맞게 동적으로 조절되게 구현해보자 (댓글의 길이가 길면 Cell의 높이가 길어지게)해당 기능을 위한 함수를 Comment View
생성일: 2022년 2월 15일 오후 9:52Post Cell에서 post를 올린 유저의 프로필 이미지를 클릭하면 해당 유저의 프로필 화면으로 가도록 구현해보자FeedCellDelegate 프로토콜에 새로운 함수를 생성(FeedController와 연결해서 프로필 화면
생성일: 2022년 2월 19일 오후 9:57사용자가 다른 사용자의 post의 댓글(comment)를 남기는 경우, follow를 하는경우, 좋아요를 누르는 경우 상대 사용자에게 Notification(알림)을 테이블뷰에 정리해서 보여주도록 하자이를 위해 Notific
생성일: 2022년 2월 26일 오후 11:02화면 가운데에 알림창을 띄워서 사용자에게 오류 내용과 같은 알림 문구를 보여줄수 있도록 구현해보자알림창은 여러곳에서 재할용하여 사용할 수 있기 때문에 extenstion을 활용하여 UIViewController의 metho
생성일: 2022년 2월 27일 오후 10:01Notification이나 post 등 데이터가 언제 적성 또는 도착했는지를 보여주기 위해 Firebase의 Timestamp를 이용하여 DB에 기록하였다.이를 활용하여 Timestamp를 사용자가 이해할만한 String으
UIButton을 스토리보드에서 생성하고 버튼의 타이틀 색상을 바꾸고 싶다면위와 같이 Style을 Default로 해주면 Text Color라는 attribute가 생성된다. (plain으로 설정시 해당 옵션이 사라진다)Text Color에서 원하는 색상을 주면 버튼의
로그인 화면들을 Navigation Controller에 담고 로그인이 성공하면 탭바 화면으로 넘어가도록 구현되어있다.이 때, 다시 로그인이 하고 싶어져서 로그인 화면으로 갔다가 다시 로그인한다. 이러한 작업이 반복되면 뷰 컨틀롤러의 스택이 엄청나게 쌓이게 된다.이러한
iOS 프로젝트를 진행하다 보면 자연스럽게 필요한 Asset들과 생성한 파일(ex. 스토리보드)들이 들어나게 된다.이러한 것들을 코드 내에서 불러올 때 직접 이름을 타이핑하여 불러오는 것이 기본적인 방법일 것이다.하지만 이렇게 직접 하드코딩하여 에셋을 불러오면 몇가지
TableView의 Cell의 크기(높이)가 Cell 내부 콘텐츠의 크기에 따라 동적으로 조정되도록 구현해보자초기 화면에는 Feed의 내용(Caption으로 지칭)이 길어지면 해당 내용이 잘리게 되고 Feed(TableView Cell)의 높이 자체도 고정된 값으로 모
Alamofire를 이용하여 서버 통신을 위한 기초 코드를 작성해보자!제일 먼저 CocoaPods 혹은 Swift Package Manager를 이용하여 Alamofire를 설치한다.단계 요약APIConstants 구조체 생성NetworkResult 열거형 생성Mode
원래 publisher를 sink 하면 하나의 value 씩 받아오지만 collect를 이용하면 한 번에 받아 올 수 있다.collect(3) 과 같은 형태로 각 어레이에 최대 몇 개의 값이 들어갈 것인지도 지정해 줄 수 있다.map을 사용하면 publisher로 부터
말 그래도 값을 필터링 해주는 OperatorremoveDuplicates는 말 그대로 중복을 제거해준다.주의할 점은 모든 중복 값을 제거하는 것이 아니라 연속되는 중복 값만 제거해 준다는 점이다.compactMap은 nil을 제거해준다.원래는 1부터 5000까지의 수
prepend를 사용하면 output 앞에 특정 값 또는 publisher를 추가할 수 있다.prepend와는 반대로 output 뒤에 특정 값 또는 publisher를 추가할 수 있다.switchToLatest 는 가장 최근에 받은 publisher가 보낸 요소를 r
min 과 max는 의미대로 sequence에서 가장 작은 값과 큰 값을 반환한다.first와 last는 의미대로 sequence에서 가장 첫번째 값과 마지막 값을 반환한다.이 때, where 파라미터에 조건을 넣어서 해당 조건을 만족하는 first 또는 last 값을
Combine을 활용하면 서버와의 네트워킹을 보다 간편하게 할 수 있다.jsonplaceholder의 더미 데이터를 활용하여 실습하였다.JSON 형식에 맞게 Codable을 채택한 구조체 모델 Post를 생성한다.getPosts 함수를 생성하고 리턴 타입으로 Post
위의 예시에서는 메인 쓰레드에서 2초마다 “Timer fired”를 출력한다. → 무한히 반복특정 시간만큼만 작동시키고 싶다면 위와 같이 cancel을 시켜주면 된다.Timer 또한 RunLoop 상에서 작동한다.autoconnect() 를 사용하면 구독을 시작 할 때
생성일: 2022년 8월 19일 오후 10:49특정 URL로 API 요청을 보내고 받아온 값을 출력하는 간단한 예시이다. 이때, 하나의 publisher에서 서버 통신을 해서 데이터를 가져오고 두 개의 subscription이 해당 publisher를 구독하고 있다면