목록iOS/Xcode (26)
k-coding

Xcode CollectionView 콜랙션 뷰 이전 포스트에서 tableView에 대해서 알아본 바 있는데 이번 포스트에선 그 테이블 뷰의 상위호환(?) 이라고 부를 수 있는 컬랙션 뷰에 대하여 포스트 하겠습니다. 우선 테이블 뷰를 돌아 보자면 테이블 뷰는 하나의 행에 원하는만큼 열을 늘려 수직 방향으로 스크롤이 가능한 인터페이스 뷰 였습니다. 그치만 컬랙션 뷰는 " 테이블처럼 일정한 가로, 세로 개수를 가진 목록 오브젝트 " 라는 정의를 가지고 있는데, 쉽게 설명하자면 컬랙션뷰는 테이블뷰로 표현할 수 있는 모든것을 표현 가능하면서, 수직, 수평 상관없이 cell을 늘릴 수 있다. 컬랙션 뷰를 잘 활용하면 아래와 같이 이쁜 UI를 구성하는데 큰 힘을 줄 수 있습니다. 자 이제 본격적으로 컬랙션뷰를 만드..

User Default 어플리케이션을 만들다보면 데이터를 저장하고 다시 불러오는 과정을 해야 할 때가 정말 많다. 그치만 그냥 하면 당연하게도 저장이 되지 않는다 데이터를 저장하기 위해 여러가지 방법이 있지만 코어 데이터니,서버 DB니 다 너무 어려워 난 그냥 간단하게 저장하고 싶다고..!! 이럴때 사용하는게 UserDefault되시겠다. 우선 간단하게 다음과 같이 스토리보드를 한번 구상해보자 자 내 설계는 좌측 ViewController의 버튼을 누르면 우측 ViewController로 이동하고 TextField에 글을 쓰고 Button을 누르면 아래에 있는 Label에 글이 바뀌고 저장되어야한다. 그러기 위해서 코드도 물론 작성해보았다. import UIKit class SecondViewCont..

searchBar 우리가 아는 흔한 어플리케이션과 프로그램에 있는 테이블뷰들은 대부분 검색창 즉 searchBar를 포함하고 있을것이다. 오늘은 테이블뷰에 서치바를 넣어서 검색이 가능하도록 해보겠습니다. 우선 정말 빠르게 테이블뷰를 한번 만들어 봅시다. import UIKit class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { @IBOutlet weak var tableView :UITableView! let identifier: String = "cell" func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int..

화면전환 iOS에서 화면 전환하는 방법은 크게 3가지가 있는데, 하나는 present, 또 다른 하나는 navigation의 push가 있고 나머지 하나는 navigation의 segue가 있다. 먼저 present에 대하여 알아보자 present present는 View 위에 View를 한겹 올려 쌓는 구조이다. 쌓는 방향은 세로 방향으로 쌓게 되며 간단하게 보여주었다가 사라질 화면을 구상할 때 주로 이용된다. present(_:animated:completion:) viewControllerPresent : 현재의 뷰컨 내용 위에 보여지는 뷰컨 animated : 애니메이션 여부 completion : 이동이 끝난 후 실행될 블록 =nil (리턴값, 파라미터 없음) @IBAction func 함수명(..

Xcode 오토레이아웃 (AutoLayout) (4) Autolayout 코드로 구현하기 Autolayout은 스토리보드에서만 구현할 수 있는게 아니라 코드상으로도 구현할 수 있다. 스토리보드를 사용하면 여러가지 장점이 존재하는데 그 장점중 가장 큰 부분은 직관적이고 마우스를통하여 AutoLayout을 구현한다는것이 가장 큰 장점일 것이다. 그렇다면 스토리보드의 단점이 무엇이길래 코드로 구현하는 일도 생길까?? 스토리보드로 구현한 AutiLayout의 단점은 1. 스토리보드의 Inspector에서 제공하지 않는 옵션이 존재합니다. 예를들어서 layer.conerRadius같은 속성 값은 기본적으로 Inspector에서 제공하지 않기 때문에 코드에서 추가하거나, Identity Inspector에서 Use..

Xcode 오토레이아웃 (AutoLayout) (3) Priority 말 그대로 우선순위라는 개념으로 우선순위가 높은 오브젝트가 먼저 자신의 size를 가지게 되고, 반대로 우선순위가 낮은 오브젝트는 자신의 순위에 따라 크기가 유동적으로 변하게 된다. priority는 1~1000 사이 값을 가지게 되는데 이 값이 높을수록 우선순위가 높게 되는 것이다. 따라서 constraints가 2개이상이 걸려서 Xcode가 어느것을 먼저 적용시켜야 할지 오류를 낼 때 하나의 우선순위를 낮춰주면 높은 우선순위인 constraints로 작동 하는 것입니다.

AutoLayout이란 constraints(제약)을 이용하여 View의 위치와 크기를 동적으로 지정하는 것이다. AutoLayout에서는 화면의 크기에 맞게 위치와 크기를 동적으로 지정하기 때문에 어떤 특정 값을 따로 지정하지 않아도 그 값이 계산(유추)가 된다면 오류가 나지 않는다. 다음과 같이 Label의 Width를 지정하지 않더라도 Trailing과 Leading을 통하여 넓이가 자동적으로 계산되어 지정된다. 그렇지만 바로 위에 경우에서는 Trailing도 0이고, 넓이도 0인데 자동적으로 width가 어느 공간만큼 계산되어 View에 나타났다. 이러한 것을 instrinsic content size 즉 본질적 컨텐츠의 크기라고 한다. instrinsic content size 대부분의 view..

Xcode Auto Layout 초기 iOS모델에 대하여 뷰의 프레임을 짤 때는 기기의 모델이 고정되어있어서 굳이 따로 생각할 필요가 없이 모두 고정된 픽셀로 크기를 지정해주어도 문제가 없었지만 iPad의 등장 밑 아이폰도 크기의 다양화로 고정된 픽셀로 View를 만들게 되면 기기에 따라 화면 비율이 깨지는 사태가 발생하였는데! frame값은 화면의 크기를 고려하지않고 무조건 원점에서 떨어진곳에 수치에 맞게 작업을 수행하기 때문이다. 이럴때 Auto Layout을 사용하면 설정할 뷰의 객체들을 다른 객체를 이용해 상대적으로 제약을 줄 수 있다. 보통 Sage Area를 기준으로 사용하며 예를들어 Safe Area를 기준으로 left로 50, right 50, top으로 10의 margin을 두고 heig..
Xcode 테이블 뷰 ( 2 ) 테이블 뷰 데이터 UITableView는 데이터 소스와 델리게이트가 꼭 필요합니다. 데이터 소스가 Model의 역할을 하고, 테이블 뷰가 View, 델리게이트가 Controller의 역할을 담당합니다. 이 세가지가 같이 존재하여야 MVC프로그래밍 디자인 패턴에 의하여 테이블 뷰가 잘 작동될 수 있습니다. 테이블 뷰자체로는 데이터의 표시만 관리하고 데이터 자체를 관리하지 않습니다. 따라서 데이터를 관리하기 위해선 UITableViewDataSource 프로토콜을 구현하는 오브젝트가 필요합니다. 이 오브젝트를 데이터 소스라고 부릅니다. 데이터 소스 데이터 소스는 데이터 모델의 델리게이트로써, 테이블 뷰의 시각적인 정보와 테이블 뷰의 각 셀을 생성하고 수정하는데 필요한 정보를 ..

Xcode 테이블뷰 ( 1 ) 테이블뷰는 iOS 어플리케이션에서 많이 사용하는 사용자 인터페이스로서, 정보를 리스트의 형태로 보여주는데 많이 사용되는 View입니다. 테이블뷰는 하나의 열(column)과 여러 줄의 행(row)을 지니며, 수직으로만 스크롤 가능합니다. 각 행은 하나의 셀(cell)에 대응합니다. 섹션(section)을 이용해 행을 시각적으로 나눌 수 있습니다. 헤더(header)에 이미지나 텍스트를 추가해 추가 정보를 보여줄 수 있습니다. 굵은 글씨로 쓰여져 있는 A / D / F / K 부분의 회색부분을 header라고 부른다. 그 안에 John Appleseed 같은 하얀색 부분을 cell이라고 부른다. header와 header사이 cell들의 집합을 section이라고 부릅니다. ..