Material Components for iOS의 FlexibleHeader를 사용해 보았습니다.
7800 단어 iOSSwiftMaterialDesign
Material Components for iOS
Material Components는 Google에서 제공하는 Material Design을 구현하는 데 도움이 되는 컴포넌트 라이브러리입니다.
자세한 내용은 다음 페이지를 읽으십시오.
htps : // 기주 b. 코 m / 마테리아 l - 코 m 포넨 ts / 마테리아 l - 코 m 포넨 ts - 이오 s
FlexibleHeader란?
Google 순정 앱의 상세 화면 등에서 볼 수 있는 스크롤에 맞추어 헤더 부분의 높이가 동적으로 바뀌는 디자인에 사용되고 있습니다.
Flexible header
htps : // 마테리아 l. 이오/데ゔぇぉp/이오 s/코 m포넨 ts/fぇぃbぇ-헤아데 rs/
Swifter는 다음 Shrine이라는 데모 앱을 참조하는 것이 좋습니다.
htps : // 기주 b. 코 m / 마테리아 l - 코 m 포넨 ts / 마테리아 l - 코 m 포넨 ts - 이오 s / t 레에 / ゔ ぇ p /
StoryBoard를 사용하여 구현 및 보기
절차는 다음과 같습니다.
전체 화면의 Container가 되는 ViewContorller 만들기
MDCFlexibleHeaderContainerViewController를 상속받은 ViewController를 만듭니다.
StoryBoard로부터 생성하는 것을 상정하고 있으므로, viewDidLoad()로 초기 세트를 행하고 있습니다. getContentViewController()는 나중에 작성하는 "Content가 되는 ViewContorller"입니다.
MDCFlexibleHeaderContainerViewController 속성: contentViewController에 설정합니다.
class FlexibleHeaderViewController: MDCFlexibleHeaderContainerViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Content部分のViewControllerをセット
let contentVC: ContentViewController = getContentViewController()
self.contentViewController = contentVC
// Header部分のViewを制御するため、headerViewControllerをContentにセット
contentVC.headerViewController = self.headerViewController
contentVC.setupHeaderView()
}
}
Content가 되는 ViewContorller 만들기
Content가 되는 ViewController를 사용하면 Header의 View와 이를 제어하기 위한 MDCFlexibleHeaderViewController를 참조할 수 있습니다.
class ContentViewController: UITableViewController {
var headerViewController: MDCFlexibleHeaderViewController?
var headerContentView: HeaderView = HeaderView.instantiateFromNib()
}
Header의 스크롤을 연동시키기 위해서, 스크롤의 Delegate인 scrollViewDidScroll를 연결합니다.
override func scrollViewDidScroll(_ scrollView: UIScrollView) {
headerViewController!.scrollViewDidScroll(scrollView)
}
이번 예에서는 「화면 전체의 Container가 되는 ViewController」로부터 콜하고 있습니다만, Header 부분의 View세트입니다. Header의 View세트와 그 내용이 되는 View를 세트하고 있습니다.
func setupHeaderView() {
let headerView = headerViewController!.headerView
// ヘッダー部分のサイズセット
headerView.trackingScrollView = self.tableView
headerView.maximumHeight = 200
headerView.minimumHeight = 72
headerView.minMaxHeightIncludesSafeArea = false
headerView.backgroundColor = UIColor.blue
headerView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
// ヘッダー部分のコンテンツセット
headerContentView.frame = (headerView.bounds)
headerContentView.autoresizingMask = [.flexibleWidth, .flexibleHeight]
headerView.addSubview(headerContentView)
}
Header가 되는 View 만들기
Header 부분에 표시하는 View를 작성합시다.
단점
다음의 공식 페이지에도 설명이 있습니다만, UINavigationController와 병용하는 경우,NavigationBar를 스스로 제어하지 않으면 안됩니다.
스크롤 조작할 수 있는 공간에도 주의가 필요합니다. Header 부분을 세로 스크롤해도 작동하지 않습니다. 이 근처, TableView만으로 구현한 경우와 조작감이 바뀌어 버릴 우려가 있습니다.
Reference
이 문제에 관하여(Material Components for iOS의 FlexibleHeader를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/nory_kaname/items/20d0176cee22d5d34548
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Material Components for iOS의 FlexibleHeader를 사용해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/nory_kaname/items/20d0176cee22d5d34548텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)