본문 바로가기

내맘대로iOSView

[iOS] UIScrollView(Horizontal) 만들기 (+ SnapKit 사용법) 이전에 작성했던 UIScrollView 글의 제목을 Horizontal이라고 해놓고 본문에는 Vertical 내용을 작성한 걸 얼마 전에 알고 급히 제목을 수정했다. 그래서 이번에는 Horizontal 방향의 UIScrollView를 사용하는 법과 추가로 SnapKit에 대한 내용을 작성한다. Horizontal 이든 Vertical 이든 어차피 같은 UIScrollView이고 방향을 어떻게 할 것이냐에 따라 고정되는 축만 달라진다. Vertical일 때는 세로로 스크롤 해야하므로 width 가 고정이었으므로 Horizontal일 때는 가로로 스크롤 해야하므로 height 가 고정이다. 아래와 같이 height 가 80인 Horizontal 방향의 UIScrollView를 만들어 보자. 1. UIView.. 더보기
[iOS] IB Designables - Failed to render and update auto layout status for ViewController: The agent threw an exception 최근 다시 iOS 앱을 만들면서 처음 보는 에러가 발생했다. 굳이 수정하지 않아도 앱은 잘 돌아간다. 때문에 처음에는 귀찮아서 무시하고 개발했지만 갈수록 눈에 거슬려서 구글링해보니 스택오버플로우에 딱 맞는 답변이 있었다. 원인은 CustomView Class를 만들 때 .xib 파일을 로드하는 부분 때문이었다. 예전에 썼던 CustomView 게시글에서 init 할 때 1 2 3 4 5 6 private func commonInit(){ Bundle.main.loadNibNamed("CustomView", owner: self, options: nil) addSubview(customView) customView.frame = self.bounds customView.autoresizingMask = [.. 더보기
[iOS] UITableView Drag & Drop으로 Row 이동 UITableView Editing Mode에서 UITableView의 setEditing()를 이용하여 row를 움직였다. 사실 row를 이동시키는 기능만 필요할 경우 이 방식보다는 cell을 Long press하여 이동시키는 방법이 훨씬 효율적이다. PC에서 바탕화면의 아이콘을 Drag & Drop으로 이동시키는 것처럼 UITableView의 Cell을 이동시키는 방법에 대해 정리한다. 1. dragInteractionEnabled, dragDelegate, dropDelegate 지정 viewDidLoad()에서 UITableView의 dragInteractionEnabled, dragDelegate, dropDelegate를 지정한다. 1 2 3 4 5 6 7 8 override func view.. 더보기
[iOS] UITableViewCell Swipe Delete 예전에 UITableView의 EditingMode와 SwipeActions에 대해 글을 작성했었다. 지금 진행 중인 개인 프로젝트에서 UITableViewCell을 스와이프하여 해당 로우를 삭제하는 기능이 필요한데 두 글에서는 너무 잡기능이 많고 정신없어서 간단하게 자주 쓰이는 Swipe Delete 기능만 기록한다. DataSource Instance Method 구현 Swipe Delete를 사용하기 위해 UITableViewDataSource의 tableView(_:canEditRowAt:), tableView(_:commit:forRowAt:) 두 가지를 구현해준다. 1 2 3 4 5 6 7 8 9 10 // Row Editable true func tableView(_ tableView: UI.. 더보기
[iOS] UIRefreshControl의 발견 인스타그램을 보다가 무심코 게시글의 가장 윗부분에서 아래로 스와이프를 하여 새로고침을 하고 있었는데 문득 이 기능을 어떻게 구현한건지 궁금해졌다. 처음에는 ActivityIndicator로 만들었겠거니 하고 예제를 찾아봤는데 전부 UITableView의 윗부분에 얹어져있는 형태였다. 자세히 보면 UITableView의 위에 addSubView된 것처럼 작동하는데 내가 원하는 것은 이게 아니었다. 인스타그램을 자세히 보면 아래로 스와이프하는 만큼 Indicator의 막대기가 채워졌고 일반적인 ActivityIndicator가 아니구나 싶어 찾아보다 UIRefreshControl을 발견했다. 1. UIRefreshControl 애플 문서를 찾아보니 UIRefreshControl과 refreshcontrol이.. 더보기
[iOS] UITableView Swipe Actions Editing Mode를 테스트하다가 따로 구현하지 않았는데도 editingStyle이 delete로 지정된 Cell들은 오른쪽에서 Delete 버튼이 튀어나오는걸 알게되어서 Swipe Actions에 대해 알아보았다. 1. UIContextualAction, UISwipeActionsConfiguration UITableView의 Delegate를 상속하는 ViewController에서 swipe라고 입력하면 leading과 trailing으로 시작하는 메소드가 있다. 말 그대로 leading은 왼쪽 끝에서 보이게 될 SwipeAction이고 trailing은 오른쪽 끝에서 보이게 될 SwipeAction이다. 이 두가지를 구현해주면 된다. SwipeAction를 구현하기 위해 UIContextualA.. 더보기
[iOS] UITableView Editing Mode 앱을 만들면서 항상 기본적으로만 사용했던 UITableView에 대해 찾아보다 Editing Mode를 사용하는 방법이 있어서 기록해둔다. 1. UITableView 추가 우선 UITableView와 UITableView를 조작할 버튼들을 추가한다. 필요한 IBOutlet, IBAction들을 연결하여 추가하고 itemName에 String 값 20개씩 넣어줄 add20Items()를 생성했다. 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 class ViewController: UIViewController { @IBOutlet weak var editTableView: UITableView! @IBOut.. 더보기
[iOS] CheckBox 만들기 with Delegate Android와 달리 iOS에는 CheckBox나 RadioButton과 같은 기능이 없다. 앱을 만들다 보면 로그인 화면의 자동 로그인, 목록에서 항목 선택 등 CheckBox 컨트롤이 필요한 경우가 의외로 많다. 이번 내용은 CheckBox를 만드는 방법과 알아두면 아주 유용하게 사용될 Delegate에 대한 것이다. 결과물부터 보자. CheckBox CheckBox도 CustomView를 이용하여 만들었다. 1. 파일 생성 CheckBox를 만들고 Delegate를 이용하여 상태값을 변경할 것이므로 Delegate.swift가 추가되었다. 2. 화면 만들기 (CheckBoxView.xib) 정사각형 모양의 CheckBox를 만들 것이므로 View의 Size를 FreeForm으로 설정하고 Width와.. 더보기