안드로이드 네이티브 개발을 하면서 iOS 네이티브 환경에도 많은 관심이 생겼다.안드로이드, iOS 둘 다 개발 할 수 있는 Flutter나 React Native를 해보려 했지만 먼저 iOS 개발에 대한 배경지식이 필요하다는 판단이 들어 iOS 개발을 시작하게 되었다.
xcode에서 바로 github로 commit, push가 가능하다. 방법은 다음과 같다.프로젝트 시작 시 하단의 Create Git repository on my Mac을 체크한다.xcode에 github 계정을 연동한다.xcode의 Preferences... 를 누
main.storyboard에서 scroll되는 긴 화면의 ui를 설정하기 위한 과정이다.view controller의 길이를 원하는 만큼 늘리기 위해, size inspector에서 fixed라고 되어있는 설정을 freeform으로 변경한다.height의 길이를 원하
main.storyboard에 tableView를 설정하는 방법은 두 가지가 있다.먼저, 빈 view controller에 Table View를 삽입하는 방법또는 아예 Table View Controller를 삽입하는 방법이 있다.이 둘의 차이는 custom의 편의 차
모든 ui를 설정했으면 클래스를 생성 후 연결해준다. > controller의 Identity Inspector의 custom class에 class 이름을 명시한다. Cell의 Attributes Inspector에서 Identifier 이름을 지정해준다. ![](
Table View의 Cell을 누르면 Cell의 상세 정보를 보여주는 페이지를 설정하는 방법이다.먼저 Cell을 누르면 나타날 페이지를 설정해준다.Cell을 control 키를 누르며 상세 페이지로 끌어간 뒤 다음과 같이 나오면 Present Modally를 선택한다
StatusBar Status Bar은 아이폰의 상단 상태 바를 말한다. 이 상태 바는 다음과 같은 코드로 숨길 수 있다. 상태 바의 색상은 다음과 같은 코드로 바꿀 수 있다. 하얀색 상태바 ![](https://images.velog.io/image
TableView에서 UITableViewCell을 상속하지 않고 view를 구분하는 방법으로는 Tag 기능이 있다. Tag 설정은 Attributes Inspector의 Tag 항목에서 설정해주면 된다. >기본으로 제공되는 cell 스타일 중, Right Deta
모서리가 둥근 View 모서리를 둥글게 만들고 싶은 view를 viewDidLoad() 내부에서 해당 인스턴스의 속성을 변경해준다. 일부 모서리만 둥근 View cornerRadius 효과를 일부만 적용시키고 싶다면 maskedCorners 속성을 활용하면 된다.
Timer는 scheduledtimer() 클래스 메서드를 사용해 지정 초 간격으로 target-action을 수행한다. timer.invalidate()RunLoop.current.add(timer, forMode: RunLoop.Mode.common)func upd
UI의 Color를 지정하다보면 시스템에서 제공하는 색상 말고 다른 색상을 선택하고 싶을 때가 있을 것이다. 위와 같이 시스템이 제공하는 색상을 사용할 수 있지만, 다른 색상을 사용하려면 그 색상의 R, G, B 값을 알아야 한다. > 여기서 alpha는 투명도를
main.storyboard를 이용해 View를 구성하는 것은 제일 쉬운 방법이다. 하지만 이 방법 외에도 코드를 이용해 View를 구성할 수 있다.
TableView는 다음과 같이 Section에 따라 나눌 수 있으며 custom하여 각 Cell의 모습을 달리 할 수 있다. 테이블 Array 설정 먼저 테이블이 구분될 Section의 Array를 만들어준다. 위의 Array의 결과는 다음과 같은 모습이 될 예
DatePicker은 기본적으로 알고 있는 다음과 같은 형태이다. 하지만 DatePicker을 가져오고 아무런 설정을 하지 않으면 다음과 같은 형태가 된다. > 이걸 누르면 ![](https://images.velog.io/images/nezhitsya/post/
모델 파일(프로젝트 명.xcdatamodeld)에서 데이터를 저장하는 방식을 설정한다. 하단에 Add Entity로 Entity를 추가해 이름을 지정해주며, Add Attribute로 데이터 이름 및 형식을 정해준다. AppDelegate.swift를 보면 Core
TableView를 옆으로 밀어 원하는 작업을 할 수 있다.canEditRowAt indexPath로 tableView의 열을 편집 가능하게 한다.editingStyleForRowAt indexPath로 밀었을 때 사용할 기능을 정한다.editingStyle은 dele
NotificationCenter에 등록된 Event가 발생하면 해당 Event에 대한 행동을 취한다. 등록된 객체들에게 동시에 Notification을 전달해주는 클래스이다. > Notification의 중계자 역할 Post post는 전송하는 notificati
유동적인 Table View의 Cell을 위해 Cell 안의 Constraints를 잘 지정해주는 것이 중요하다. AutomaticDimension Cell마다 다른 높이를 적용하기 위해서는 tableView 메소드 중 HeightForRowAtIndexPath를
SearchBar를 구현하기 위한 방법은 2가지 방법이 있다. SearchBar SearchBar를 NavigationBar에 넣는 방법 UISearchController UIViewController를 상속하는 UISearchController를 사용하는 방법
CocoaPod는 오픈소스를 관리하는 방법 중 하나이다.오픈소스를 다운받아 직접 프로젝트에서 넣을 수 있지만 업데이트가 어려운 문제점이 있다.CocoaPod를 사용하면 라이브러리 간의 의존성 체크 및 라이브러리 버전 관리, 지원 OS 및 라이브러리 설정이 쉽다.터미널에
Delegate는 '위임하다'와 같은 의미로 해석된다. 다시 말하면 어떤 객체에서 일어나는 이벤트에 관한 혹은 어떤 객체에 뿌려줄 데이터에 관한 코드를 다른 객체에서 작성해주는 것을 말한다. 즉, Sender의 일을 Receiver가 대신해주며 이러한 행위는 Prot
아이패드가 출시되면서 편리한 UI를 제공하기 위해 고안된 Split View는 다음과 같은 구성을 말한다.기본적으로 왼쪽에 메뉴에 해당하는 좁은 뷰를 두고, 오른쪽에는 디테일한 정보를 담는 뷰를 위치시킨다.위의 Cotroller를 스토리보드 화면에 위치시키면 다음과 같
RSS란? > >Rich Site Summary의 약자로, 뉴스나 블로그 사이트에서 주로 사용하는 콘텐츠 표현 방식이다. RSS는 사용자들이 사이트를 직접 방문하지 않고도 새로운 기사들을 확인할 수 있도록 하나의 파일 로 많들어 놓은 것으로, RSS파일 주소를 사용하여
Collection View Table View에 비해 나열이 자유롭다. 수평, 수직으로 나열 방향을 custom 가능하다. Table View에서 Table View Cell을 이용해 Cell custom이 가능한 것과 같이 Collection View Cell을
FlowLayout 그리드 혹은 다른 라인 기반(lined-based) 레이아웃을 구현하는 데 사용된다. UICollectionViewDelegatFlowLayout 프로토콜을 사용해야 한다.
UIScrollView의 하위 View로 UIImageView 객체를 동적으로 생성 후 Pinch Gesture로 이미지를 줌 인, 줌 아웃 액션을 구현한다.
Collection View를 이용해 수평으로 넘길 수 있는 Card View를 생성할 수 있다. Cell을 custom하기 Collection View Scroll Direction Collection View의 Attributes Inspector의 Scro
색상 바꾸기 회전하기
TableView의 Cell에 Animation을 넣어 역동적으로 표현이 가능하다.
Toolbar는 다음과 같은 Navigation Bar를 말한다. 먼저 Toolbar를 가져오면 Toolbar가 위치한 모습에 따라 다음과 같은 모습이 나타난다. 최대한 아래로 끌어내린 모습 ![](https://images.velog.io/images/n
Toolbar를 뒤의 배경색과 일치시키기 위한 방법은 다음과 같다. Bar Tint Toolbar의 Attributes Insepctor에 위치한 Bar Tint 색상을 배경색과 일치시킨다. 그럼에도 Toolbar의 경계는 명확히 보인다. ![
UIViewControllerAnimatedTransitioning
CAKeyframeAnimation
CALayer UIView에는 렌더링, 레이아웃, 애니메이션 등을 관리하는 Core Animation 클래스인 CALayer가 있다. 특징 View에는 하나의 레이어만 구성 (SubLayer는 여러개 소유 가능) View를 여러 개 쌓는 것 보다 Layer를 쌓는
이와 같은 로딩 화면을 본 적이 많을 것이다. "••••" 부분은 animate 함수를 이용해 간단히 구현할 수 있다. 이미지 세팅 먼저 이미지를 View Controller에 위치하고 이미지의 배율을 0.01로 매우 작게 만든다. Animation 각각의
Storyboard는 iOS 5부터 사용되었으며, 그 이전에는 .nib 또는 .xib 파일을 이용해 인터페이스를 구성했다. > nib : Nextstep Interface Builder xib : Xcode Interface Builder > > _.nib에서 .xi
여러 View를 옆으로 넘겨보기 위해서는 ScrollView를 사용해야 한다.
Video를 삽입하기 위해서는 새로운 VideoSplashViewController를 생성하여 메인 ViewController에서 사용할 수 있도록 해야한다.
NSURLConnection 수행 시 오류 해결
swift에서는 파일들을 다루기 위한 클래스로 FileManager를 제공하고 있다.FileManager는 FileManager.default 인스턴스를 기본으로 제공하며, 원하면 자신만의 인스턴스를 새롭게 생성할 수도 있다.파일시스템의 파일 혹은 디렉토리들은 모두 경
Delegate & DataSource 생성
DataSource - 데이터를 받아 뷰를 그려주는 역할Table View를 예시로, DataSource 메소드는 다음과 같다.Delegate - 어떤 행동에 대한 "동작"을 제시Table View를 예시로, Delegate 메소드는 다음과 같다.
스토리보드와 코드를 연결시키기 위해서는 IB(Interface Builder)로 시작하는 Attribute를 사용한다. @IBInspectable 코드와 스토리보드의 인스펙터 영역을 이어준다. 즉, 인스펙터 영역에 원하는 Attribute를 추가할 수 있게 해준다
Collection View에 커스텀한 Layout을 삽입할 예정이다.먼저, Delegate 프로토콜을 만들어준다.CollectionViewLayout 클래스는 UICollectionViewLayoutAttributes를 상속한다.새롭게 생성한 Layout을 사용하기
URLSession
URL 오류 > Cannot convert value of type 'String' to expected argument type 'URLRequest'
CLLocationManager위치정보와 관련된 이벤트를 처리하는 역할을 하는 객체CLLocationDistance기존 위치에서의 거리 측정(미터 단위)CLLocation시스템에서보고 한 위도, 경도 및 코스 정보MKCoordinateRegion특정 위도와 경도를 중심
import Contacts import ContactsUI
reference
3D Touch 기존 정전식 터치 패털이 x, y 좌표를 이용한 평면 좌표계의 터치 인식이었다면, 3D Touch는 감압식을 중첩하여 z축 좌표계를 포함한 3D UX를 구현한 것이다. Shourtcut 3D Touch를 이용하여 홈 스크린 어플리케이션 아이콘을 눌러
date 변경 시 AppDelegate의 메소드 실행
CoreML CoreML은 학습된 모델을 쉽게 사용하도록 도와준다. 더불어 Vision을 사용하면 얼굴, 랜드마크, 텍스트, 사각형, 바코드 및 다양한 객체를 감지하는 모델을 사용할 수 있다. 프로젝트에 모델 추가 Resource 그룹에 추가한다. VNCoreM