Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- map
- Clean Code
- swiftUI
- UICollectionView
- Protocol
- Observable
- uitableview
- Human interface guide
- ios
- combine
- 리펙터링
- 애니메이션
- tableView
- MVVM
- Xcode
- uiscrollview
- Refactoring
- 클린 코드
- UITextView
- rxswift
- swift documentation
- 리펙토링
- collectionview
- HIG
- ribs
- 스위프트
- 리팩토링
- SWIFT
- RxCocoa
- clean architecture
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] table view에서 특정 separator 삭제 방법 (header의 하단, 마지막 셀의 하단) 본문
iOS 응용 (swift)
[iOS - swift] table view에서 특정 separator 삭제 방법 (header의 하단, 마지막 셀의 하단)
jake-kim 2020. 11. 12. 01:21방법: CALayer를 가지고 테이블 뷰 색깔로 그려주게 되면, separator가 가려지게끔 하는 원리
- CALayer를 이용하여 UIView의 하단에 줄을 긋는 함수 정의
public extension UIView {
func addBottomBorderWithColor(color: UIColor) {
let border = CALayer()
border.backgroundColor = color.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height, width: self.frame.size.width, height: 1)
self.layer.addSublayer(border)
}
func addAboveTheBottomBorderWithColor(color: UIColor) {
let border = CALayer()
border.backgroundColor = color.cgColor
border.frame = CGRect(x: 0, y: self.frame.size.height - 1, width: self.frame.size.width, height: 1)
self.layer.addSublayer(border)
}
}
- HeaderView에서 separator 가리는 예제
// UITableViewDelegate, UITableViewDataSource를 구현하는 곳
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
if dataSource[section].type == . {
let headerView = tableView.dequeHeaderFooter(MyHeaderView.self)
headerView.addBottomBorderWithColor(color: .white) // table view색깔이 white인 경우, separator를 흰색으로 덮는 로직
return headerView
}
return nil
- 마지막 Cell의 separator 가리는 예제
- 1) 해당 cell이 마지막 cell인지 체크하는 함수추가
public extension UITableView {
func isLast(for indexPath: IndexPath) -> Bool {
let indexOfLastSection = numberOfSections > 0 ? numberOfSections - 1 : 0
let indexOfLastRowInLastSection = numberOfRows(inSection: indexOfLastSection) - 1
return indexPath.section == indexOfLastSection && indexPath.row == indexOfLastRowInLastSection
}
}
- 2) 마지막 cell에 bottom separator 가리기
func placeCell(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, place: Place, isFromRecentPlace: Bool = false) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myCell") as! MyCell
if tableView.isLast(for: indexPath) {
DispatchQueue.main.async {
cell.addAboveTheBottomBorderWithColor(color: .common_c42_white)
}
}
return cell
}
'iOS 응용 (swift)' 카테고리의 다른 글
[iOS - swift] NotificationCenter, RxSwift, Foreground진입 시 동작 (0) | 2020.11.16 |
---|---|
[iOS - swift] KeychainAccess프레임워크로 키체인(keychain)관리하기 (0) | 2020.11.15 |
[iOS - swift] iOS14+ 위치 권한 설정 (precise) (0) | 2020.11.08 |
[APNs] Apple push notification service (0) | 2020.11.08 |
[Deeplink] 딥링크 (URL Scheme, Universal Link) (0) | 2020.11.07 |
Comments