`

新风作浪博客学习(六)ios 视图切换翻页效果 .

    博客分类:
  • ios
ios 
阅读更多
本文写的是视图切换,涉及到的内容有

1.实现代码添加Navigation Bar  Toolbal;

2.实现在Navigation Bar和Toolbar上用代码添加Bar Button Item;

3.UIView层面的简单动画效果




[img]

[/img]

[img]

[/img]

[img]

[/img]

[img]

[/img]



开始制作:

1.创建一个新工程叫NVDemo; File->New->Project ->single View Application -> next

[img]

[/img]






2.在新建两个ViewController,分别为FirstViewController和SecondViewController,顺便把XIB一块生成好

[img]

[/img]







3.首先在视图上添加导航栏和导航按钮,经测试导航栏上只能添加两个导航按钮,和设置一个title标题;

我们还需要知道的一个常识是NavigationBar  ToolBar  Tab  Bar  都是44像素,所以在设置他们宽度时候他们的高度设置成44

还有一个通知栏,显示电量信息信号的地方是20像素;
- (void)viewDidLoad
{
    [super viewDidLoad];
	// Do any additional setup after loading the view, typically from a nib.
    
//    创建导航栏,44像素
    UINavigationBar *navigationBar = [[UINavigationBar alloc] initWithFrame:CGRectMake(0, 0, 320, 44)];
    
//    需要在导航栏上创建按钮,所以先创建一个导航栏集合
    UINavigationItem *navagationItem = [[UINavigationItem alloc] initWithTitle:@"导航栏"];
    
    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:@selector(pageDown:)];
    
    UIBarButtonItem *rightButton = [[UIBarButtonItem alloc]initWithTitle:@"右测试"
                                                                   style:UIBarButtonItemStyleDone
                                                                  target:self
                                                                  action:@selector(leftpage:)];
    [navigationBar pushNavigationItem:navagationItem animated:YES];
    
    [navagationItem setLeftBarButtonItem:leftButton animated:YES];
    [navagationItem setRightBarButtonItem:rightButton animated:YES];
    
    [self.view addSubview:navigationBar];
     
    UIToolbar *toolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 416, 320, 44)];
    
    NSMutableArray *toolBarArray = [NSMutableArray array];
     
    [toolBarArray addObject:[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemPageCurl
                                                                           target:self
                                                                           action:@selector(switchLoadView:)]];
    
    [toolBarArray addObject:[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemSearch
                                                                         target:self
                                                                         action:@selector(rightpage:)]];
    
    [toolBarArray addObject:[[UIBarButtonItem alloc]initWithTitle:@"MyTitle"
                                                            style:UIBarButtonItemStylePlain
                                                           target:self
                                                           action:nil]];
    
    
    
    //UIToolBar上添加图像
    [toolBarArray addObject:[[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"myImage.png"]
                                                            style:UIBarButtonItemStylePlain
                                                           target:self
                                                           action:nil]];
       
    [toolBar setItems:toolBarArray animated:YES];  
    [self.view addSubview:toolBar];
      
}



   [navigationBar pushNavigationItem:navagationItem animated:YES];涉及到一个压栈的操作,把navigationItem压到navigationBar里,导航栏上只能添加左右两个按钮;所以是setLeftBarButtonItem 和 setRightBarButtonItem,最后再将navigationBar添加到视图之上;

         在Toolbar上添加可以添加各种按钮,创建一个可变数组,把添加的按钮全部放到数组上,[toolBar setItems:toolBarArray animated:YES];将数组里按钮集合添加到了toolBar上面,选取图片的时候素材没选好,所以显示出来的图片那个按钮效果不是太好








4.接下来说的是按钮事件,因为需要用到FirstViewController和SecondViewController,在RootViewController.m添加上他们的头文件,为了区别确实是两个视图的切换,在他们的ViewDidLoad函数中初始化视图的背景颜色,

self.view.backgroundColor = [UIColor yellowColor];  和self.view.backgroundColor = [UIColor redColor];

按钮时间再次也不做过多解释,全部写在注释里了,其他几个都一样,只是修改了动画效果,变化不大,详情可下载源代码研究一下;
-(void) switchLoadView:(id)sender
{

//开始一个动画    
    [UIView beginAnimations:@"Curl" context:nil];
//    设置动画方式,开始和结束时动画效果比较慢
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
//    动画持续时间
    [UIView setAnimationDuration:1.25];
//    设置动画效果,向上翻页
    [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:YES];    
    
//    首先判断firstView视图父视图是否为空
    if (firstView.view.superview == nil) 
    {
//        父视图为空,在判断他的子视图是否为空,如果为空在创建一个视图加载上面
        if (firstView.view == nil) {
            FirstViewController *firstViewDemo = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
            firstView = firstViewDemo;
        }
//        把seconView视图从父视图中移除
        [secondView.view removeFromSuperview];
//        在当前视图插入子视图firstView的视图
        [self.view insertSubview:firstView.view atIndex:0];
    }
       
    else {
            if (secondView.view == nil) 
            {
                SecondViewController *secondViewDemo = [[SecondViewController alloc] initWithNibName:@"SecondViewController" bundle:nil];
                secondView = secondViewDemo;
            }
            [firstView.view removeFromSuperview];
            [self.view insertSubview:secondView.view atIndex:0];
        }
//       动画结束
    [UIView commitAnimations];
}





咱在这在研究一个问题,在RootAppDelegate.m中我们先看看系统生成的代码
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.   
    self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}




系统直接加载的就是的RootViewController的视图,也就是弹出第一个界面是RootViewController.xib,假如说我想第一个就显示的FirstViewController控制的视图怎么办? 我们就可以在这个函数中进行重写

在delegateApp.h中@class RootViewController后面添加@class FirstViewController;此处声明一个类,在这样当我们添加@property (strong, nonatomic) FirstViewController *fTestViewController;才不会报错;




只需修改两行代码,此处注释原先加载RootViewController视图的代码,可能是我命名的不够合理,RootViewController和rootViewController要区别开,一个工程建立的,一个是系统本身自动生成的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
//    self.viewController = [[RootViewController alloc] initWithNibName:@"RootViewController" bundle:nil];
//    self.window.rootViewController = self.viewController;
     
    self.fTestViewController = [[FirstViewController alloc] initWithNibName:@"FirstViewController" bundle:nil];
//  把根控制视图设置成fTestViewController
    self.window.rootViewController = self.fTestViewController;
    
    [self.window makeKeyAndVisible];
    return YES;
}



然后再到我们的FirstViewController.m的ViewDidLoad函数先添加几行代码,以示区别
- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    self.view.backgroundColor = [UIColor yellowColor];
    
    UIToolbar *toolBar = [[UIToolbar alloc]initWithFrame:CGRectMake(0, 0, 320, 44)];
    
   NSMutableArray *toolBarArray = [NSMutableArray array];
    [toolBarArray addObject:[[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemAction
                                                                         target:self
                                                                         action:nil]];
    
    UIBarButtonItem *title=[[UIBarButtonItem alloc] initWithTitle:@"My Test"
                                                            style:UIBarButtonItemStylePlain
                                                           target:self
                                                           action:nil];
    [toolBar setItems:[NSArray arrayWithObject:title]];
    [toolBar setItems:toolBarArray];
        [self.view addSubview:toolBar];
    
}





  • 大小: 128.5 KB
  • 大小: 114.1 KB
  • 大小: 101.9 KB
  • 大小: 105.3 KB
  • 大小: 182 KB
  • 大小: 197.1 KB
分享到:
评论

相关推荐

    iOS开发中那些高效常用的宏 - 新风作浪的博客专栏 - 博客频道 - CSDN.NET1

    在iOS开发中,宏定义是Objective-C编程中一个非常实用的工具,它们可以用来简化代码、提高效率并增强代码的可读性。标题中的“iOS开发中那些高效常用的宏”指的是开发者在iOS应用开发过程中经常使用的宏定义,这些宏...

    曝气风机切换操作票.docx

    标题中的“曝气风机切换操作票.docx”指的是在淮南皖能环保电力有限公司进行的一项热力机械操作,涉及曝气风机的切换工作。这通常发生在污水处理或生物氧化过程中,曝气风机是为生物处理池提供氧气的关键设备。描述...

    专业新风系统资料PPT学习教案.pptx

    专业新风系统资料PPT学习教案.pptx

    新风系统设计PPT学习教案.pptx

    本PPT学习教案着重讲解了新风系统设计的相关知识,包括新风量的确定、新风负荷的计算以及新风设备的选择和布置。 新风量的确定是新风系统设计的基础,它基于三个主要因素:卫生要求、补充局部排风量和保持空调房间...

    电子政务-具有电源自动切换电路的新风控制器.zip

    本资料"电子政务-具有电源自动切换电路的新风控制器.zip"聚焦于一种特殊的技术解决方案,即新风控制器,它内置了电源自动切换电路,这对于提升公共建筑或办公环境的能源管理和环境质量具有重要意义。 新风控制器是...

    新风系统设计重点PPT学习教案.pptx

    新风系统设计是建筑环境工程中的重要组成部分,其主要目的是为室内环境提供清新、健康的空气,同时保持室内气候的适宜性。以下是对新风系统设计关键知识点的详细解析: 1. **新风定义**:新风指的是从室外引入的...

    新风系统简介PPT学习教案.pptx

    新风系统是一种用于室内空气质量改善的设备,它主要由风机、进风口、排风口和相关管道及接头组成。在不开启窗户的情况下,新风系统能够持续不断地将室外的新鲜空气引入室内,同时将室内的污浊空气排出,实现室内空气...

    2019年新风系统行业概览2020精品报告.rar

    2019年以来,新风系统在能效比、过滤效果、静音设计等方面取得了显著的提升。HEPA高效过滤网的普及,能够有效拦截PM2.5等微粒物,保障室内空气质量。同时,智能化控制系统的应用,使得新风系统可以根据环境变化自动...

    新风合同.pdf

    然而,根据给出的【标题】和【部分内容】,我们可以看出这是一个与“新风合同”相关的文件内容。该部分内容虽然显示的是经过OCR扫描后识别的文字,但内容的含义和结构显得支离破碎,缺乏明确的信息和上下文。 考虑...

    新风机控制系统模块整理.pdf

    DDC新风机控制系统模块指导手册 DDC新风机控制系统模块是当前最常用的新风机控制系统之一,广泛应用于各类工业自动化领域。本文档提供了DDC新风机控制系统模块的指导手册,旨在帮助用户快速了解和掌握DDC新风机控制...

    学习讲正气树新风心得.doc

    本文主要探讨的是“讲正气 树新风”的重要性,强调在社会发展中保持朴实、诚信和道德规范的必要性。以下为详细解释: 1. **讲正气**:讲正气是指在言行举止中坚持正义,反对歪风邪气。这涉及到道德价值观的坚守,...

    机房新风系统介绍.pdf

    3. 双向流新风机:内部拥有送风机和排风机,能够同时进行送风和排风,通过管道与空气分布器相连,具有高效通风效果。 4. 单向流新风机:通过排风单元将废气排出室外,形成负压,从而引入新鲜空气。 5. 窗式新风机:...

    新风系统的设计PPT学习教案.pptx

    新风系统设计是确保室内空气质量的关键,涉及到人体健康、能源效率和环境舒适度等多个方面。在新风系统设计中,首要任务是理解通风的基本概念及其目的。通风是通过自然或机械方式实现室内与室外空气的交换,以满足...

    新风系统任务进度表.xlsx

    新风系统任务进度表.xlsx新风系统任务进度表.xlsx新风系统任务进度表.xlsx

    智能新风系统技术规范书...doc

    智能新风系统技术规范书...doc

    美的新风机组技术手册.doc

    "美的新风机组技术手册" 美的新风机组技术手册是美的商用空调研发的新风处理机产品,该产品采用直接膨胀制冷的方法,通过室内换热器强劲而精确的加热和冷却能力来处理室外空气以接近室温的新风处理设备。该产品的...

    honeywell新风用户手册

    ### Honeywell智能家居新风系统知识点解析 #### 一、引言 Honeywell智能家居新风系统用户手册旨在为用户提供全面的操作指南和维护建议,确保用户能够充分利用该系统带来的诸多好处。本手册主要针对Honeywell的HR150...

    新风系统设计教程.pdf

    新风系统设计教程.pdf

    户内新风系统幻灯片.ppt

    户内新风系统是一种针对现代建筑中室内空气品质问题而设计的技术解决方案。随着现代生活方式的发展,家居用品、装修材料及日常用品的挥发性化学物质、细菌和病毒等对室内空气质量产生了严重影响,尤其在高密度的城市...

Global site tag (gtag.js) - Google Analytics