新しい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. UIScrollViewの画像をスクロールするときに視差効果を追加する
- 4. スクロール垂直視差
- 5. 視差スクロールを使用する画像の幅を変更できません
- 6. 無限スクロールUIPageViewController
- 7. 水平視差スクロールUIScrollView iOS
- 8. ステレオマッチングにおける視差マップと視差画像の相違
- 9. 大きな画像のスクロール
- 10. 画像のスクロール
- 11. オフスクリーンの視差ノードcclayersでのスクロール
- 12. 有限長での視差スクロール
- 13. 視差効果 - 縦スクロールのみ
- 14. 大きな画像をスクロールするQt
- 15. 視差画像を視差行内に追加する方法
- 16. 視差スクロールでアンドロイドライブ壁紙を作成
- 17. リストビューのスクロール画像
- 18. 視差スクロールはどのように機能しますか?
- 19. テーブルビューがスクロールしたときにオーバーレイ画像が非表示になる
- 20. スワイプジェスチャーで視差スクロールをスムーズにする方法
- 21. スクロール中のスクロールビュー内の画像の位置をスクロールする
- 22. uitableviewをスクロールすると画像が元に戻る
- 23. 水平画像スクロール
- 24. 画像のスクロールに助けが必要
- 25. WP7でSIPが表示されているときにスクロールしようとすると、ScrollViewerがスクロールしない
- 26. スクロールしてからスクロールした後にスクロールすると、スクロールが機能しない
- 27. ビューが表示にスクロールしたときを知る方法
- 28. jquery supersized plugin - 画像がサイトとスクロールできるようにする
- 29. 視差スクロールを実装する方法は?
- 30. スクロールCSSの背景画像
Appleが自分のページビューコントローラのアーキテクチャを変更した場合、あなたは困惑しています。 –
@VanDuTranは合意しましたが、それまでは、すべてが良い、と最高のアプローチのように思えます。私は代替案を見ない –
それは私のための最初のサブビューではなく、2番目のサブビューでした。このコードはそれを行いました: 'if([self.pageVC.view.subviews [1] respondsToSelector:@selector(setDelegate:)]){ [self.pageVC.view.subviews [1] setDelegate:self]; } ' – Whoa