5

私はこの質問が典型的であり、フォーラムで何度も尋ねられたことを知っていますが、それでも私の問題を解決することはできません。

アラビア語で本のアプリケーションを作成していますが、uipageviewcontrollerの右から左への遷移を実行する必要があります。そして、それは私が言わなければならないすべてです。

もう1つ(自分自身を十分に説明していなかった場合)このスレッドとして正確な必要性があります:ページングカールアニメーションのUIPageViewController方向を変更する方法ですが、彼らが話している解決策を作ることができませんでした。私を説明するか、私がそれを行う方法を持っていることができるリンクを私に与えることができますそれは十分すぎるでしょう:)

4

3 に答える 3

9

このようにして行うことができます

  1. pageViewControllerのデータソースのコードをからに交換しviewControllerBeforeViewControllerますviewControllerAfterViewController

  2. UIPageViewControllerSpineLocationMinに変更UIPageViewControllerSpineLocationMax

これを確認するには、ページベースのアプリケーションテンプレートをユニバーサルとして起動し、次のように変更します。ModelController.m

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController];
    if (index == NSNotFound) {
        return nil;
    }

    index++;
    if (index == [self.pageData count]) {
        return nil;
    }
    return [self viewControllerAtIndex:index storyboard:viewController.storyboard];
}

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController
{
    NSUInteger index = [self indexOfViewController:(DataViewController *)viewController];
    if ((index == 0) || (index == NSNotFound)) {
        return nil;
    }

    index--;
    return [self viewControllerAtIndex:index storyboard:viewController.storyboard];
}

「RootViewController.m」の(indexOfCurrentViewController%2 == 0)に変更UIPageViewControllerSpineLocationMinし、条件をスワイプします。UIPageViewControllerSpineLocationMax

- (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController spineLocationForInterfaceOrientation:(UIInterfaceOrientation)orientation
{
    if (UIInterfaceOrientationIsPortrait(orientation) || ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone)) {
        UIViewController *currentViewController = [self.pageViewController.viewControllers objectAtIndex:0];
        NSArray *viewControllers = [NSArray arrayWithObject:currentViewController];
        [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];

        self.pageViewController.doubleSided = NO;
        return UIPageViewControllerSpineLocationMax;
    }

    DataViewController *currentViewController = [self.pageViewController.viewControllers objectAtIndex:0];
    NSArray *viewControllers = nil;

    NSUInteger indexOfCurrentViewController = [self.modelController indexOfViewController:currentViewController];
    if (indexOfCurrentViewController == 0 || indexOfCurrentViewController % 2 == 0) {
        UIViewController *previousViewController = [self.modelController pageViewController:self.pageViewController viewControllerBeforeViewController:currentViewController];
        viewControllers = [NSArray arrayWithObjects:previousViewController, currentViewController, nil];
    } else {
        UIViewController *nextViewController = [self.modelController pageViewController:self.pageViewController viewControllerAfterViewController:currentViewController];
        viewControllers = [NSArray arrayWithObjects:currentViewController, nextViewController, nil];
    }
    [self.pageViewController setViewControllers:viewControllers direction:UIPageViewControllerNavigationDirectionForward animated:YES completion:NULL];


    return UIPageViewControllerSpineLocationMid;
}

出典:PageViewControllers Apple Doc

于 2012-06-20T17:20:03.197 に答える
1

コアグラフィックスとコアアニメーションに飛び込む必要があります。

  1. 2つのレイヤーを作成します(前/次および現在)
  2. 「パンジェスチャ」(イベント処理ガイドを参照)を実行するときは、左にスワイプするか右にスワイプするかを確認する必要があります(前/次のページ)
  3. 次に、レイヤーで3D回転を実行します

これがページめくりについての良い例です

于 2012-06-12T19:48:49.867 に答える
1

マデフ、「ページベースのアプリケーション」テンプレートを使用しませんか?

新しいxCodeプロジェクトを開始するだけです。

iOS>アプリケーションで、ページベースのアプリケーションを探します。[OK]をクリックし、[オプション]を選択します。あなたがしなければならないのはあなたのコンテンツを(「データソース」を介して)提供することです。

これが複雑な部分です...しかし、ここにいくつかのヒントがあります

http://www.techotopia.com/index.php/Implementing_a_Page_based_iOS_5_iPhone_Application_using_UIPageViewController

http://www.techotopia.com/index.php/An_Example_iOS_5_iPhone_UIPageViewController_Application

于 2012-06-12T23:57:17.737 に答える