9

UIPageViewControllerフリップアニメーションをしながら影の色を変えようとしています。ただし、常に白色のみを表示します。裏側の背景色の白を他の色(黒またはセフィア)に変更する方法。iBookも同じことをしています。

下の画像には、私が変更したい色の白いbgがあることを述べています。

スクリーンショット: ここに画像の説明を入力してください

4

3 に答える 3

10

私はしばらくの間同じことをしようとしてきました、そして私はついにそれを理解しました。背景色を他の色に設定することはできませんが、UIPageViewControllerが背面に追加する別のビューを提供することはできます。そしてそれがここでの秘密です。

Appleのドキュメントから:

Spine location                                Double sided               What to pass
UIPageViewControllerSpineLocationMid               YES               Left and Right Page.
SpineLocationMin or SpineLocationMax               YES               Front and Back of the page.
SpineLocationMin or SpineLocationMax               NO                Front page only.

したがって、基本的に、両面プロパティをyesに設定し、両方のデータソースメソッドに2つのviewControllerを提供する必要があります。

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController;
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController;

新しいページを追加するたびに、各メソッドが2回呼び出されます。したがって、通常返すviewControllerと、ページめくりアニメーションを実行するときに背面に追加される新しいviewControllerを提供する必要があります。

あなたの「BackViewController」が何を持っているかはあなた次第です。単に黒いビューを表示することも、必要に応じてフロントページのスクリーンショットを撮り、そこから鏡像を取得することもできます。

それがどのように機能するかを理解すれば、難しくはありません。ここで私が見ることができる唯一の問題は、黒いビューまたは黒い背景を持つものを追加すると、ページをめくるときの影が白になることです。理由はわかりませんが、これはさまざまなアプリで発生しているので、Appleにとってはこれは正常な動作だと思います。しかし、それは本当に奇妙に見えます。

編集:

わかりやすくするためにサンプルコードを追加しました。 https://github.com/mattabras/DoubleSidedPageViewController

アブラス

于 2013-03-22T20:23:42.057 に答える
0
- (void) renderPageAtIndex:(NSUInteger)index inContext:(CGContextRef)ctx {
UIImage *image = [images objectAtIndex:index];
CGRect imageRect = CGRectMake(0, 0, image.size.width, image.size.height);
CGAffineTransform transform = aspectFit(imageRect,
                                            CGContextGetClipBoundingBox(ctx));
CGContextConcatCTM(ctx, transform);
CGContextDrawImage(ctx, imageRect, [image CGImage]);
}
于 2012-09-12T11:06:16.180 に答える
-2

pagecontrol 選択可能なページ表示色の場合--

UIPageControl はデフォルトではこれをサポートしていません。独自のページ コントロールを作成し、自分で描画する必要があります。

于 2012-09-12T06:14:15.997 に答える