質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

Q&A

解決済

1回答

4255閲覧

react-nativeにて、スライドによる条件変化によりビューを変化させるには。

MOTOMUR

総合スコア195

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

0グッド

0クリップ

投稿2018/02/07 07:28

編集2018/02/08 06:23

webサイトでよく見かけるビューの変化の話ですが、

上にスワイプして下にスクロールするときに、上のヘッダー部分を隠す、トップに戻ったら隠した部分を出現させる、
という機能をアプリではあまり見かけません。
このような機能をアプリに実装するのは難しいのでしょうか?

ScrollViewにて、スクロールされたという情報を受け取るのはpropsで行うのでしょうか?

また、横スクロールにより、タブを変更するという機能も見かけますが、
この機能と先ほどの機能は同じロジックで管理できるのでしょうか?

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

上にスワイプして下にスクロールするときに、上のヘッダー部分を隠す、トップに戻ったら隠した部分を出現させる、
という機能をアプリではあまり見かけません。
このような機能をアプリに実装するのは難しいのでしょうか?

↓が参考になるかと思います

https://medium.com/appandflow/react-native-scrollview-animated-header-10a18cb9469e

ちなみにあまり見かけない理由ですが、 header をタップすると一番上まで戻るという機能が OS 標準でついているので、スマホアプリで header を隠すのはそういったお約束を破る、ということになります。
驚き最小の原則で header を隠さないようにしているのではないかと思います。

ScrollViewにて、スクロールされたという情報を受け取るのはpropsで行うのでしょうか?

onScroll にハンドラーを登録して検知するという形になります

https://facebook.github.io/react-native/docs/scrollview.html#onscroll

また、横スクロールにより、タブを変更するという機能も見かけますが、
この機能と先ほどの機能は同じロジックで管理できるのでしょうか?

react-navigation など、ナビゲーション系のパッケージがサポートしているジェスチャーで処理する形になります。

投稿2018/02/07 08:06

januswel

総合スコア301

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MOTOMUR

2018/02/07 08:11

> react-navigation など、ナビゲーション系のパッケージがサポートしているジェスチャーで処理する形になります。 とのことですが、現在自分のプロジェクトはreact-router-nativeにて行なっておりますので、たぶんパッケージを頼れません。 onScrollにて前後のステートに変化させて、stateにて描画処理を分けるといった方法での記述は不可能でしょうか? onScrollの説明を読まずに聞いているので、onScrollにてベクトルを受け取れるのであれば可能かなと思ったのですが、どうでしょうか?
januswel

2018/02/07 08:39

react-router-native は gesture サポートがないようですね… 複数回のイベント取得が必要ですが、前回のハンドラー動作時より今回のハンドラー動作時の y 座標が大きいか小さいかで方向は判別可能です つまりスクロール可能な方向に関してのみ向きがわかることになります 他にはジェスチャーのイベントをハンドリングする方法があります 次を参考にしてみてください https://facebook.github.io/react-native/docs/gesture-responder-system.html https://www.npmjs.com/package/react-native-swipe-gestures
MOTOMUR

2018/02/08 06:24 編集

onScrollの方挑戦してみました。 自分のやりたいのは、ヘッダーではなく、プロフィールコンテンツのスクロールによるhideだったのですが、この記事(https://medium.com/appandflow/react-native-scrollview-animated-header-10a18cb9469e)の最後の部分が自分のやりたいことと違い、苦戦しております。 イメージを質問文にて改めさせていただきますが、構図を簡単に説明しますと、上にヘッダーがあり、プロフィールのコンテンツがあり、タブがあり、そのユーザーの投稿があります。スクロールすると、プロフィールを畳んで、ヘッダーとタブ以下を表示したいのですが、scrollY: new Animated.Value(0)にて、stateの中身を参照して、三項演算にて描画処理わけは可能なのでしょうか?(中身がわからないので質問です。) opacityの設定は記事通りでも良いと思います。 (opacityにてコンテンツを透明にさせられたかは不確かな記憶ですが・・・)。 コード的には { this.state.~~ === ??? ?<></> :<></> } このように表現できるのがベストなのですが、可能でしょうか? gestureについてはもう少し理解に時間がかかりそうです。
januswel

2018/02/08 07:12

> 上にヘッダーがあり、プロフィールのコンテンツがあり、タブがあり、そのユーザーの投稿があります。スクロールすると、プロフィールを畳んで、ヘッダーとタブ以下を表示したい であれば件の URL のアニメーションを、スクロール量に応じてプロフィール欄の height を 0 にするように変更してやれば実現可能ですね アニメーションについては次がわかりやすいです https://speakerdeck.com/nolick1219/introduction-to-react-native-animated https://facebook.github.io/react-native/docs/animations.html#animated-api
MOTOMUR

2018/02/16 09:06

こんにちは。 onScrollにてコーディングをしていたのですが、困った点がありまして、 質問文掲載のタブにあたる部分のみが、スクロール可能になり、他の部分のスクロールが不可能になってしまいました。 https://github.com/MOTOMUR/plz_donation/blob/master/iOS/views/MyPage.js このようなコーディング状況です。 どうしてこのようにスクロールが一部限定になってしまうのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問