新しいYahoo!天気アプリで見られるのと同様の効果を出そうとしています。基本的に、UIPageViewController
の各ページには背景画像があり、ページビューをスクロールすると、画像の位置は約半分の速度でしかスクロールしません。どうすればいい? UIPageViewController
で何らかの委任方法を使って現在のオフセットを取得し、そのような画像を更新できると思った。唯一の問題は、UIPageViewController
がスクロールされているかどうかわからないことです。そのための方法はありますか?ありがとう!UIPageViewControllerがスクロールしているときに通知する(画像の視差スクロール)
答えて
for (UIView *view in self.pageViewController.view.subviews) {
if ([view isKindOfClass:[UIScrollView class]]) {
[(UIScrollView *)view setDelegate:self];
}
}
)あなたにスクロールしたコントローラで知っているとパーセンテージを得るためにあなたの配列にあなたのコントローラを保存する必要があります。 これはプライベートアップルAPIを使用していません。 scrollview.contentOffsetに注意してください :
は私が100%にUIPageViewController
の内側のスクロールビュー
WARNINGを見つけ、サブビューを横断追加しました。コントローラが新しいページにスクロールするとリセットされます
scrollview
オフセットトラッキングとそのようなものが必要な場合は、UICollectionViewController
を使用して、コレクションビュー自体とページングを有効にしたセルを使用する方がよいでしょう。
私の推測では、ではなく、 UIPageViewControllerですが、むしろページされたUIScrollViewです。 UIScrollView は、では、スクロールが行われるときに何が起きているかを追跡する、絶えず繰り返されるデリゲートメソッドを提供します。
UIPageViewControllerが密かに使用しているページングされたUIScrollViewにアクセスできる可能性がありますが、何かが壊れている可能性があります。
をUIPageViewControllerでこれを行う方法があるに違いありません。私はそれを使用すればすべてを単純化します。 Yahoo Appは、UIPageViewControllerも使用しているようです。 UIViewController自体の中から画面上の位置を取得する方法はありますか? –
UIPageViewControllerは基本的に単なるUIScrollViewではありませんか? –
UIPcrollView単独では、スクロールスタイルのUIPageViewControllerが存在する前に、スクロールスタイルのUIPageViewControllerのようなものをやっていたことがわかります。それを行う方法を説明するWWDCビデオが全部あります。 – matt
あなたが探しているものは、視差スクロールと呼ばれています。それを手助けできるライブラリがいくつかあります。
編集:マットは正解です。これは答えではなく、ヒントです。とにかく者はそれを完了してみましょう:
あなたはそれが提供するデリゲートメソッドを使用する必要がありますあなたのUIPageViewController背後に横たわっていた背景画像をアニメーション化するために:これらの2つの方法で
-[id<UIPageViewControllerDelegate> pageViewController:willTransitionToViewControllers:]
-[id<UIPageViewControllerDelegate> pageViewController:didFinishAnimating:previousViewControllers:transitionCompleted:]
あなたはスクロールの割合を計算することができます(これはあなたがすべての標準スクロールビューのAPIメソッドにアクセスすることができます
それは答えではありません。 – matt
あなたはその割合をどのように取得しますか? –
検索されたビューコントローラの位置を ' - [NSArray indexOfObject:]'で取得する必要があります。次に、 ' - [NSArray count] 'のインデックスの割合を得るための基本的な計算ができます。 –
:
のObjective-C
for (UIView *v in self.pageViewController.view.subviews) {
if ([v isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)v).delegate = self;
}
}
と、このプロトコルを実装する
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
スウィフト
for view in self.pageViewController.view.subviews {
if let scrollView = view as? UIScrollView {
scrollView.delegate = self
}
}
を
と、このプロトコル
func scrollViewDidScroll(scrollView: UIScrollView)
スウィフトコード作品をありがとう –
使用@パウロのスニペットを実装 -
for (UIView *v in self.pageViewController.view.subviews) {
if ([v isKindOfClass:[UIScrollView class]]) {
((UIScrollView *)v).delegate = self;
}
}
このプロトコルを実装する:これはあなたのスクロールの完了率を与える-(void)scrollViewDidScroll:(UIScrollView *)scrollView
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGPoint point = scrollView.contentOffset;
float percentComplete;
percentComplete = fabs(point.x - self.view.frame.size.width)/self.view.frame.size.width;
NSLog(@"percentComplete: %f", percentComplete);
}
を。ハッピーコーディング!
あなたも短く、それを書くことができスウィフト3では:
if let scrollView = self.pageViewController.view.subviews.first(where: { $0 is UIScrollView }) as? UIScrollView {
scrollView.delegate = self
}
extension UIPageViewController {
var scrollView: UIScrollView? {
return view.subviews.filter { $0 is UIScrollView }.first as? UIScrollView
}
}
を使用する:
pageController.scrollView?.delegate = self
- 1. jQuery視差画像がスムーズでないときにマウスホイールでスクロールする
- 2. 多方向、複数画像、視差スクロール
- 3. スクロール中の背景画像の視差スクロール
- 4. UIScrollViewの画像をスクロールするときに視差効果を追加する
- 5. スワイパースライダーと視差スクロール
- 6. 画像が視差スクロールで表示されない
- 7. 視差スクロールCSS
- 8. 視差セクションにスクロール
- 9. イージング付き視差スクロール
- 10. 視差のセクションがスクロールしない
- 11. 視差スクロール - 画像がなくなった
- 12. 視差スクロールを使用する画像の幅を変更できません
- 13. スクロール垂直視差
- 14. 画像がスクロールしているテーブルビュー
- 15. 視差スクロール1枚の画像で作業しますが、他の
- 16. NestedScrollViewでの視差スクロール
- 17. 純粋なCSS視差スクロールのためにEdgeで画像が壊れているのはなぜですか?
- 18. 画像の読み込みが遅いときにスクロールする
- 19. 1ページ視差をスクロールしてjsをスクロール
- 20. 無限スクロールUIPageViewController
- 21. 水平視差スクロールUIScrollView iOS
- 22. 固定ヘッダー視差スクロール
- 23. 視差スクロールを平滑化
- 24. 視差スクロール・ホッピー; C#Unity 2D
- 25. outofmemoryerror画像ビューでスクロール表示をスクロールするとき
- 26. uiviewにuipageviewcontrollerを追加するとスクロールできない
- 27. 画像に白いパッチが表示され、ウェブサイトが全長にスクロールしないskrollr jsモバイル視差の問題
- 28. ステレオマッチングにおける視差マップと視差画像の相違
- 29. uipageviewcontrollerを高速でスクロールするときの黒いビューコントローラ
- 30. ページが上下にスクロールするときの画像の移動
Appleが自分のページビューコントローラのアーキテクチャを変更した場合、あなたは困惑しています。 –
@VanDuTranは合意しましたが、それまでは、すべてが良い、と最高のアプローチのように思えます。私は代替案を見ない –
それは私のための最初のサブビューではなく、2番目のサブビューでした。このコードはそれを行いました: 'if([self.pageVC.view.subviews [1] respondsToSelector:@selector(setDelegate:)]){ [self.pageVC.view.subviews [1] setDelegate:self]; } ' – Whoa