2012-02-10 15 views

回答

2

试试这个。一个解决方案根据需要进行修改。

创建类型单一视图应用的一个新项目,将其命名为BookEffect,取消使用故事板,取消包括单元测试,但一定要检查该选项使用自动引用计数。

然后添加到项目中了几张照片,例如,以JPEG格式。

创建一个新的文件 - 使用Objective-C类模板用的UIViewController的一个子类,选择该选项用XIB1用户界面,并将其命名为SinglePageViewController。将该文件保存在BookEffect文件夹中。

添加完毕后,选择SinglePageViewController.xib并添加到视图一个UILabel控制的UIImageView控制,使该文件的所有者适当的连接。

修改SinglePageViewController.h看起来像这样:

在SinglePageViewController.m补充:

@synthesize imageView, titleLabel; 

,并添加这些定义的方法:

- (void) setPageNumber: (NSUInteger) newPageNumber{ 
    pageNumber = newPageNumber; 
} 
- (NSUInteger) pageNumber{ 
    return pageNumber; 
} 
- (void) viewDidAppear:(BOOL)animated{ 
    [super viewDidAppear:animated]; 
    [titleLabel setText:[NSString stringWithFormat:@"Page %d", pageNumber]]; 
    NSArray *images = [[NSBundle mainBundle] pathsForResourcesOfType:@".jpg" inDirectory:nil]; 
    UIImage *img = [UIImage imageWithContentsOfFile:[images objectAtIndex:pageNumber-1]]; 
    [imageView setImage:img]; 
} 

现在去到BookEffecViewController.h,并使其看起来像这样:

#import <UIKit/UIKit.h> 
#import "SinglePageViewController.h" 
@interface BookEffectViewController : UIViewController 
<UIPageViewControllerDataSource> 
@property(nonatomic, strong) UIPageViewController *pageViewController; 
@end 

在BookEffectViewController.m修改viewDidLoad中看起来像这样:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    self.pageViewController = [[UIPageViewController alloc] initWithTransitionStyle:UIPageViewControllerTransitionStylePageCurl navigationOrientation:UIPageViewControllerNavigationOrientationHorizontal options:nil]; 
    self.pageViewController.dataSource = self; 
    SinglePageViewController *singlePage = [[SinglePageViewController alloc] initWithNibName:@"SinglePageViewController" bundle:nil]; 
    [singlePage setPageNumber:1]; 
    NSArray *controllers = [[NSArray alloc] initWithObjects:singlePage, nil]; 
    [self.pageViewController setViewControllers:controllers direction:UIPageViewControllerNavigationDirectionForward animated:NO completion:nil]; 
    [self addChildViewController:self.pageViewController]; 
    [self.view addSubview:self.pageViewController.view]; 
    self.pageViewController.view.frame = self.view.bounds; 
} 

定义两个方法BookEffectViewController.m:

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController 
{ 
    NSUInteger previousPageNumber = [((SinglePageViewController*)viewController) pageNumber]; 
    if (previousPageNumber == 1) { 
     return nil; 
    } 
    else{ 
     SinglePageViewController *singlePage = [[SinglePageViewController alloc] initWithNibName:@"SinglePageViewController" bundle:nil]; 
     [singlePage setPageNumber:previousPageNumber-1]; 
     return singlePage; 
    } 
} 
- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerAfterViewController:(UIViewController *)viewController 
{ 
    NSUInteger previousPageNumber = [((SinglePageViewController*)viewController) pageNumber]; 
    if (previousPageNumber >= [[[NSBundle mainBundle] pathsForResourcesOfType:@".jpg" inDirectory:nil] count]) { 
     return nil; 
    } 
    else{ 
     SinglePageViewController *singlePage = [[SinglePageViewController alloc] initWithNibName:@"SinglePageViewController" bundle:nil]; 
     [singlePage setPageNumber:previousPageNumber+1]; 
     return singlePage; 
    } 
} 

就是这样。 Command-R使用iPad模拟器进行测试 这是一个基本的外壳和其他花里胡哨可以添加为您自己的乐趣,即取出页码,添加标题等。

希望这可以帮助。

3

这听起来像你想UIPageViewController

+0

您是否有示例UIPageViewController代码? – 2012-02-10 04:20:03

+2

现在确实没有'UIPageViewController'示例代码,并且通过在Google中键入'UIPageViewController',您肯定不会找到任何代码。 – 2012-02-10 04:22:49

+0

所以这是如何做到这一点。我的家伙只是使用CA过渡。 – 2012-02-10 07:06:05

相关问题