技术宅,fat-man

增加语言的了解程度可以避免写出愚蠢的代码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

iOS:翻页效果

 

复制代码
//
//  main.m
//  Hello
//
//  Created by lishujun on 14-8-28.
//  Copyright (c) 2014年 lishujun. All rights reserved.
//


//  翻页太快会有问题,未解决
//Unbalanced calls to begin/end appearance transitions for <ContentViewControler: 0x8f3d570>.

#import <UIKit/UIKit.h>

// -----------------------------内容视图控制器-----------------------------
@interface ContentViewControler : UIViewController
@property (nonatomic,strong) UILabel *label;
@property NSString *message;
@end

@implementation ContentViewControler
@synthesize label ;
@synthesize message = _message;

-(id)initWithMessage:(NSString *)aMessage
{
    _message = aMessage;
    return self;
}

-(void) viewDidLoad
{
    //[super viewDidLoad];
    
    //创建label对象
    label = [[UILabel alloc]initWithFrame:CGRectMake(0.0, 0.0, 320.0, 30.0)];
    label.text = _message;
    label.center = self.view.center;
    label.textAlignment = UITextAlignmentCenter;
    label.backgroundColor = [UIColor clearColor];
    label.textColor = [UIColor redColor];
    
    //在视图上添加label
    [self.view addSubview:label];
    self.view.backgroundColor = [UIColor lightGrayColor];
}

-(void) updateMessage:(NSString*)aMessage
{
    _message = aMessage;
    label.text = _message;
}
@end


// -----------------------------视图控制器对象-----------------------------
@interface MyPageViewController : UIViewController <UIPageViewControllerDataSource>
{
    int pageIndex;
}
@property (strong, nonatomic) UIPageViewController *pageViewControler;
@property (strong, nonatomic) NSArray *array;
@end

@implementation MyPageViewController

@synthesize pageViewControler = _pageViewControler;
@synthesize array = _array;

-(void) viewDidLoad
{
    [super viewDidLoad];
    
    self.view.frame = CGRectMake(0.0f, 0.0f, 320.0f, 440.0f);
    
    ContentViewControler *content1 = [[ContentViewControler alloc]initWithMessage:@"Hello"];
    ContentViewControler *content2 = [[ContentViewControler alloc]initWithMessage:@""];
    NSArray *array = @[content1];
    NSLog(@"%@",content1);
    _array = [[NSArray alloc]initWithObjects:content1, content2, nil];
    
    _pageViewControler = [[UIPageViewController alloc]
                               initWithTransitionStyle: UIPageViewControllerTransitionStylePageCurl
                                 navigationOrientation: UIPageViewControllerNavigationOrientationHorizontal
                                               options: nil];
    
    [_pageViewControler setViewControllers:array
                                 direction:UIPageViewControllerNavigationDirectionForward
                                  animated:YES
                                completion:NULL];
    
    _pageViewControler.dataSource = self;
    
    [self addChildViewController:_pageViewControler];
    [self.view addSubview:_pageViewControler.view];
    
    pageIndex = 0;
}

//--------------- data source 方法 -----------------

- (UIViewController *)
    pageViewController:(UIPageViewController *)pageViewController
    viewControllerBeforeViewController:(UIViewController *)viewController
{
    ContentViewControler *aViewController = (ContentViewControler*)[self changeViewControler:viewController];
    [aViewController updateMessage:@"i'm lishujun too"];
    return aViewController;
}

- (UIViewController *)
    pageViewController:(UIPageViewController *)pageViewController
    viewControllerAfterViewController:(UIViewController *)viewController
{
    ContentViewControler *aViewController = (ContentViewControler*)[self changeViewControler:viewController];
    [aViewController updateMessage:@"i'm lishujun"];
    return aViewController;
}

// --- 自定义方法,在只有两个元素的数组里切换元素---
-(UIViewController *) changeViewControler:(UIViewController*)viewController
{
    int index = [_array indexOfObject:viewController];
    switch(index)
    {
        case 0:
            return _array[1];
        case 1:
            return _array[0];
    }
    return nil;
}
@end


// -----------------------------委托对象-------------------------------
@interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate>
{
    IBOutlet UIWindow *window;
}

@property (nonatomic, retain) UIWindow *window;
@property (nonatomic, retain) MyPageViewController *viewController;
@property (nonatomic, retain) UINavigationController *nav;
@end

@implementation HelloWorldAppDelegate

@synthesize window;
@synthesize viewController;

-(void) applicationDidFinishLaunching:(UIApplication *)application
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen]bounds]];
    self.viewController = [[MyPageViewController alloc]init];
    //self.window.rootViewController = self.viewController;
    
    self.nav = [[UINavigationController alloc]initWithRootViewController: viewController];
    [self.nav setNavigationBarHidden:YES];        //隐藏导航栏,位于视图顶部
    [self.nav setToolbarHidden:YES];              //隐藏工具栏,位于视图底部
    
    self.window.rootViewController = self.nav;
    
    [self.window makeKeyAndVisible];
}

@end

// -----------------------------程序入口-----------------------------
int main(int argc, char * argv[])
{
    @autoreleasepool {
        return UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
    }
}
复制代码

 

posted on   codestyle  阅读(741)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
历史上的今天:
2012-09-15 请教路神APUE源码编译
2012-09-15 Macbook Air上编译APUE源码
点击右上角即可分享
微信分享提示