티스토리 뷰
What is UICollectionView ?
Apple 개발자 사이트에서 UICollectionView 를 소개하는 이미지
** 안드로이드의 RecyclerView -> GridLayoutManager
How to implement UICollectionView ?
Step 1) Create Project
구현을 위해 싱글 뷰 앱 프로젝트를 생성하자.
Step 2) add Collection View controller in storyboard
Main.storyboard 를 열어 기존에 존재하는 view controller 를 삭제한다.
빈 스토리보드에 Navigation Controller 를 추가한다.
Navigation Controller 에 기본적으로 달려있는 root view controller 를 삭제하고,
Collection View Controller 를 추가한다.
위와 같이 네비게이션 컨트롤러에서 마우스 오른쪽버튼을 눌러 Collection View Controller 와 Relationship Segue 로 연결한다.
그리고 다시 네비게이션 컨트롤러를 선택하여 시작지점을 정해준다.
CollectionViewController 를 ViewController.swift 와 연결시켜준다.
Step 3) ViewController.swift 의 확장 class 변경
ViewController.swift 로 들어가 아래와 같이 UIViewController -> UICollectionViewController 로 변경해준다.
Step 4) Collection View Cell .swift 생성
프로젝트에 new file > Cocoa touch class 를 눌러 Collection View Cell Class 를 만들자
다시 Main Story board 로 돌아와 Collection View Controller 안의 작은 네모 박스를 선택해 CollectionViewCell과 연결해 준다.
Collection reusable View 에 MyCell 을 적어준다.
Step 5) Cell 꾸미기
방금 본 Cell에 Label 하나를 추가해보자.
추가한 라벨을 CollectionViewCell.swift 에 추가한다.
Step 6) item 설정
ViewController 를 열어 Collection View 에 들어갈 item list 를 다음과 같이 설정한다.
Step 7) DataSource 확장
ViewController.swift 에 아래와 같이 DataSource func 들을 오버라이드 한다.
import UIKit
class ViewController: UICollectionViewController {
var collectionItems = [String]()
override func viewDidLoad() {
super.viewDidLoad()
setCollectionItems()
}
func setCollectionItems() {
collectionItems = [
"Apple",
"Samsung",
"LG",
"Sky",
"Huawei",
"Xiaomi",
"Window",
"Nokia"
]
}
//********** 추가되는 부분 ***************
// MARK: - CollectionView DataSource
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return collectionItems.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! CollectionViewCell
// Configure the Cell
cell.collectionViewTest.text = collectionItems[indexPath.row]
return cell
}
//********** 추가되는 부분 ***************
}
Step 9) 실행
우선 실행해보자
아래와 같은 화면이 뜬다면 성공
** 3개씩 일정하게 나오긴하는데....
글자도 잘리고 3개말고 내가 지정한 갯수만큼 나오게 하고 싶다.
다음편에 계속...
****** [전체 코드 ] *****
ViewController.swift
import UIKit
class ViewController: UICollectionViewController {
var collectionItems = [String]()
override func viewDidLoad() {
super.viewDidLoad()
setCollectionItems()
}
func setCollectionItems() {NSLog("setCollectionItems")
collectionItems = [
"Apple",
"Samsung",
"LG",
"Sky",
"Huawei",
"Xiaomi",
"Window",
"Nokia"
]
}
// MARK: - CollectionView DataSource
override func numberOfSections(in collectionView: UICollectionView) -> Int {
return 1
}
override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return collectionItems.count
}
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "MyCell", for: indexPath) as! CollectionViewCell
// Configure the Cell
cell.collectionViewTest.text = collectionItems[indexPath.row]
return cell
}
}
CollectionViewCell.swift
import UIKit
class CollectionViewCell: UICollectionViewCell {
@IBOutlet var collectionViewTest: UILabel!
}
'Computer > Android&iOS' 카테고리의 다른 글
( Android ) App is not indexable by Google Search; consider adding at least one Activity with an ACTION-VIEW intent filter. (0) | 2018.12.24 |
---|---|
(iOS/swift4) 간단한 로딩 view 띄우기 (UIActivityIndicatorView) (0) | 2018.12.17 |
( Android ) 2018.11. Android OS 점유율 (0) | 2018.11.21 |
(iOS/swift) story board 없이 작업하기 (0) | 2018.11.20 |
(iOS/swift) Type '' does not conform to protocol '' (0) | 2018.11.19 |
- Total
- Today
- Yesterday
- 노드
- Android
- php
- 서버
- xcode
- GIT
- 스위프트
- 깃헙
- CentOS
- node.js
- C
- mysql
- 배열
- Phaser
- C언어
- 안드로이드
- 손석희
- Node
- 뉴스룸
- linux
- 점유율
- 리눅스
- BBC 가쉽
- Kotlin
- Asterisk
- 앵커브리핑
- git hub
- Swift
- IOS
- nodejs
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |