0

Leavesプロジェクトを使用して、あるpdfページから別のpdfページに移動しています。これは正常に機能しています。これで、ページの回転はノートブックのように左から右へ、右から左へとなります。上から下、下から上にカールする必要があります。誰かがそれを行う方法、またはこれを行うための他のテンプレートを知っていますか?

4

3 に答える 3

4

Leaves http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIPageViewControllerClassReferenceClassRef/UIPageViewControllerClassReference.htmlの代わりに、AppleのUIPageViewControllerを使用してください。

これにより、たとえばiBooksで使用されているカールが正確に得られるため、カールしたビューのより美しい(より現実的な)マトリックスが得られます。

すべてのメモシートをビューにして、ビューにUIPageViewControllerを指定するだけです。また、背骨が配置されている場所など、さまざまなオプションがあります。

カールアップするには、 [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES]; [UIView setAnimationTransition:UIViewAnimationTransitionCurlDown forView:self.view cache:YES];前述のバラのように使用するか、上下の遷移を担当する別のUIPageViewControllerをインスタンス化します。本当にビューに入り、複数のアイテムを切り替えたい場合は、2つのuipageviewcontrollerを使用するので、1つは水平でもう1つは垂直です。

于 2012-08-22T13:46:59.797 に答える
2

この方法

 SampleViewController *sampleView = [[[SampleViewController alloc] init] autorelease];
    [sampleView setModalTransitionStyle:UIModalTransitionStylePartialCurl];
    [self presentModalViewController:sampleView animated:YES]; 

このチュートリアルのように役立つかもしれません

于 2012-08-22T05:29:41.597 に答える
1

既存のLeavesビューは、左から右にハードコーディングされています。ハードコーディングされた上から下へのバージョンは簡単に作成できますが、より堅牢な汎用ソリューションがある可能性があります。

ただし、どうしても葉を使用する必要がある場合は、それに合わせてソースを書き直すことができます。以下の解決策は、垂直方向の動きをハードコードします。水平方向と垂直方向のオプションが必要な場合は、さらに多くの作業を行う必要があります。


画面

setUpLayers

を呼び出すたびに軸を反転しCGPointMakeます。これにより、影を表示するグラデーションが修正されます。

また、に変更topPage.contentsGravity = kCAGravityLeft;します。これは、受信ページが正しいエッジで表示されるようにする微妙な変更です。topPage.contentsGravity = kCAGravityBottom;topPageReverseImage.contentsGravity = kCAGravityRight;topPageReverseImage.contentsGravity = kCAGravityTop;

setLayerFrames

ジオメトリの変更のほとんどはここで行われます。元のコードは奇妙なことに、ある場所ではビュー境界を使用し、他の場所ではレイヤー境界を使用しています。それらを複製しましたが、このコードを本番環境で使用する前に、区別が意味があるかどうかを理解しておくとよいでしょう。

- (void) setLayerFrames {
    topPage.frame = CGRectMake(self.layer.bounds.origin.x, 
                               self.layer.bounds.origin.y, 
                               self.bounds.size.width,
                               leafEdge * self.layer.bounds.size.height);
    topPageReverse.frame = CGRectMake(self.layer.bounds.origin.x,
                                      self.layer.bounds.origin.y + (2*leafEdge-1) * self.layer.bounds.size.height,
                                      self.bounds.size.width,
                                      (1-leafEdge) * self.layer.bounds.size.height);
    bottomPage.frame = self.layer.bounds;
    topPageShadow.frame = CGRectMake(0,
                                     topPageReverse.frame.origin.y - 40,
                                     bottomPage.bounds.size.width,
                                     40);
    topPageReverseImage.frame = topPageReverse.bounds;
    topPageReverseImage.transform = CATransform3DMakeScale(1, -1, 1);
    topPageReverseOverlay.frame = topPageReverse.bounds;
    topPageReverseShading.frame = CGRectMake(0,
                                             topPageReverse.bounds.size.height - 50,
                                             topPageReverse.bounds.size.width,
                                             50 + 1);
    bottomPageShadow.frame = CGRectMake(0,
                                        leafEdge * self.bounds.size.height,
                                        bottomPage.bounds.size.width,
                                        40);
    topPageOverlay.frame = topPage.bounds;
}

インタラクション

updateTargetRects

これが計算する場所nextPageRectprevPageRect、それらを左右ではなく、下部と上部に配置します。

touchesMoved:withEvent:

に変更self.leafEdge = touchPoint.x / self.bounds.size.width;self.leafEdge = touchPoint.y / self.bounds.size.height;ます。

于 2012-08-28T01:06:38.960 に答える