일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Clean Code
- uiscrollview
- Protocol
- swiftUI
- Human interface guide
- RxCocoa
- collectionview
- 리펙토링
- 리팩토링
- rxswift
- 스위프트
- 클린 코드
- Observable
- ribs
- swift documentation
- uitableview
- UICollectionView
- UITextView
- tableView
- clean architecture
- 애니메이션
- MVVM
- HIG
- SWIFT
- map
- 리펙터링
- ios
- Xcode
- combine
- Refactoring
- Today
- Total
목록uitableview (27)
김종권의 iOS 앱 개발 알아가기
UITableView 데이터 추가하기UITableView에서 스크롤하면서 동시에 아래에 데이터를 계속해서 추가해주어야하는 페이지네이션 UI가 존재페이지네이션 UI 구현 방법은 이전 포스팅 글 참고 [iOS - swift] UITableView 하단 로딩 구현 방법 (#페이지네이션, footer loading, UIActivityIndicatorView)하단 로딩 구현 아이디어1단계) Pagination: tableView의 willDisplay 델리게이트에서 마지막 인덱스 값인지 체크하고, 마지막 인덱스 값이면 페이지네이션 구현2단계) 하단로딩: willDisplay에서 페이지네이ios-development.tistory.comex) 페이징 관련 코드마지막 셀이 보여질 때 로딩 뷰, footerView를..
셀이 탭 되었을때 애니메이션 넣는 방법터치 이벤트는 tableView의 Delegate 메서드인 didSelectRowAt에서 받을 수 있는데, 여기서 특정 셀을 캐스팅해서 터치 애니메이션 실행이 가능(애니메이션은 셀이 탭 되었을때 셀이 가지고 있는 메서드를 실행시키고, 셀 안에서 UIView.animate로 애니메이션처리)(애니메이션 적용은 쉽기 때문에 이 포스팅 글에서는 생략)func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let cell = tableView.cellForRow(at: indexPath) as? CustomCellType1 cell?.didTapCell()}하지만 이렇게하면 확장..
headerView 색상headerView의 색상 backgroundColor를 아래처럼 clear라고 설정한 상태에서, 스크롤 하여 header가 sticky될때 색상이 자동으로 lightGray색상으로 변함import UIKitclass HeaderView: UITableViewHeaderFooterView { ... override init(reuseIdentifier: String?) { super.init(reuseIdentifier: reuseIdentifier) contentView.backgroundColor = .clear // tableView의 스타일 중 디폴트인, plain상태에서는 위처럼 보이고 grouped 상태에서는 아래처럼 backg..
UITableViewCell과 UICollectionViewCellUITableViewCell과 UICollectionViewCell은 각각 반복되는 여러 데이터를 화면에 보이는 지점만 렌더링하여(cellForRowAt, cellForItemAt) 효율적으로 뷰를 그릴 수 있는 인터페이스UITableViewCellUICollectionViewCell각 커스텀 셀을 구현할 때 비슷한 구조를 가지고 있음ex) tableViewCell 구현class CustomTableViewCell: UITableViewCell { let titleLabel = UILabel() override init(style: UITableViewCell.CellStyle, reuseIdentifier: String..
scrollViewDidEndDragging(_:willDecelerate:) 개념 scrollView의 델리게이트 메소드 스크롤하는 드래그가 종료되었을때 호출 스크롤이 종료되었을때 호출 decelerate값이 true이면 사용자가 스크롤을 놓을때 관성으로 놓아진것 (드래그를 떼고나서 서서히 멈추는 스크롤 됨) decelerate값이 false이면 사용자가 스크롤을 놓을때 관성없이 놓은것 (드래그를 떼고나서 바로 멈춤) extension ViewController: UITableViewDelegate { func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool) { print("decelerate>"..
일반적인 DataSource 관리 Section이 여러개이고 Item도 여러개인 경우, 보통 dataSource를 2차원 배열로 하거나, Section과 Item을 갖는 struct를 만들어서 관리 class ViewController: UIViewController { struct Section { var title: String var items: [String] } var sections: [Section] = [ Section(title: "header is a", items: ["A1", "A2"]), Section(title: "header is b", items: ["B1", "B2"]), ] let tableView: UITableView = {...} } extension ViewCont..
setContentOffset 개념 UIScrollView의 메서드이며, CGPoint 좌표를 통해 원하는 곳으로 스크롤 하게끔하는 기능 애플에서는 이 메서드에 completion handler를 따로 작성하지 않아 직접 구현이 필요 completion 구현하는 방법에는 UIView.animate와 CATransaction 등등의 방법이 널리 알려져 있지만 이 방법으로는 completion 동작 x setContentOffset에 completion 구현 방법 "contentOffsetAnimationDuration"를 사용하여 UIScrollView의 인스턴스에 setValue로 입력하면 스크롤 속도를 지정할 수 있는 아이디어를 사용 scrollView.setValue(0.5, forKeyPath: "..
contentInsetAdjustmentBehavior 속성 safeArea를 고려하여 자동으로 레이아웃을 지정해주도록 하는 옵션 구체적으로는 scrollView의 content 영역의 inset을 safe area 고려하여 레이아웃될지 결정해주는 옵션 ContentInsetAdjustmentBehavior의 4가지 옵션 automatic(default): 자동으로 safe area에 맞게 레이아웃 조정 scrollableAxes: 스크롤 가능한 방향만 safe area 고려 never: safe area 상관 없이 적용 always: content는 무조건 safe area 고려 @available(iOS 11.0, *) public enum ContentInsetAdjustmentBehavior : ..