20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Twitterアプリのプロフィール風UI (2020年追記)

Last updated at Posted at 2018-10-11

作ってみたら意外とサクッといけました。

tw.gif

コード
https://github.com/osanaikoutarou/TwitterLikeUI

※もちろん本家を見てもらえれば分かる通り、実際はもう少し複雑です

少し解説

階層はこんな状態です。

view
  ーHeaderView
  ーUIScrollView(横)
     ーUITableView
     ーUITableView
     ーUITableView
     ーUITableView

HeaderViewがスクロール内に入っていないのが引っ掛けです。これを入れてしまうと途端に難しくなります。
こういったUIは、ViewのConstraintを直接書き換えたほうがコントロールしやすいです。
コントロールするのはUIScrollViewDelegateのscrollViewDidScrollです。
黄色いバーがちょうど上に来る当たりで止めれば、まるでUITableViewのコンポーネントみたいです。
(でも4つのTableViewに影響して動いているので、コンポーネントなわけないんですよね)

黄色いViewの中の、現在のViewを表す水色のViewも、画面左からのConstraintを動かしているだけです。

追記: 実践 (実際に組んでみた感想)

2案件で実際に組みました。
保守を考えて、各TableViewをViewControllerに切り出し、ContainerViewを使いましたが、思いのほか複雑になりました。
これ何も言わないでおいたら引き継ぎ大変になると思います。
案件次第では仕様レベルで回避したほうが良いと思います。
ドハマリしそうです。

コードはこちら。
https://github.com/osanaikoutarou/TwitterLikeUI/tree/develop

ContainerViewを使わなければもう少しシンプルになるんですが、ViewControllerが非常に重くなるので痛し痒しです。

UIPageViewControllerに逃げてしまう手もあります。
その場合はiTunes Storeのアプリが参考になるはずです。

追記: 更にちゃんと実装する

Libraryを使う方法もあるようです
https://github.com/maxep/MXParallaxHeader
 
自分で実装する場合も、「複数ScrollView+1HeaderView」を実装する際にこちらのLibraryが参考になるかもしれません

20
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
17

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?