【IOS开发—视图控制器】

一、UIViewController

  视图控制器是UIViewController类或者其子类对象,每个视图控制器都负责管理一个视图层次结构。在UIViewController中有一个重要的UIView属性, 这个view就是这个视图层的根视图,当程序将view作为子视图加入窗口时,也会加入UIViewController对象所管理的整个视图层次结构。

  视图控制器只有在将某个视图显示在屏幕上时,相应的视图控制器才会创建其视图,这种延迟加载视图的做法能提高内存的使用效率。视图控制器创建视图的方式有两种:

  1)重写UIViewController中的loadView方法。

  2)使用nib文件。

二、将当前时间(无论哪个时区)转换成系统时区的时间

    //返回系统当前的时区,对比localTimeZone(区别是localTimeZone时区是可以被修改的)
    NSTimeZone *timeZone=[NSTimeZone systemTimeZone];
    //目标日期与本地时区的偏移量
    NSInteger seconds=[timeZone secondsFromGMTForDate:date];
    //将目标日期+上偏移量转化成本时区的时间
    NSDate *newDate=[date dateByAddingTimeInterval:seconds];

三、UITabBarController

  UITabBarController也是继承于ViewController的类,他能够实现tab,来管理多个ViewCOntroller标签项。

    //添加一个UITabBarController
    UITabBarController *tabController = [[UITabBarController alloc] init];
    tabController.viewControllers = @[BNRController, XKController];

另外,标签项的标签栏上可以设置图片和title,具体数据是由视图控制器的tabBarItem属性提供。ViewController需要重写initWithNibName方法

- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];

    if (self) {
        //设置标签页的标题
        self.tabBarItem.title = @"Hypnotize";

        //从图像文件创建一个UIImage对象
        UIImage *image = [UIImage imageNamed:@"Hypno.png"];

        //将UIImage对象赋给标签页的image属性
        self.tabBarItem.image = image;
    }

    return self;
}

四、添加本地提醒

直接上代码

    //添加本地提醒
    UILocalNotification *note = [[UILocalNotification alloc] init];

    if (note) {

        //notification触发的时间
        note.fireDate  = date;

        //显示在图标上的红色数字
        note.applicationIconBadgeNumber = 1;

        //设置时区
        note.timeZone = [NSTimeZone defaultTimeZone];

        // 设置重复间隔
        note.repeatInterval = kCFCalendarUnitDay;

        //通知的body
        note.alertBody = @"Hypontize me!!";

        //这个是触发对应按钮上的文字
        note.alertAction = NSLocalizedString(@"mememe", nil);

        //UIApplication是一个单例对象,通过sharedApplication可以获得这个单例
        //scheduleLocalNotification 用于通知系统去执行这个notification
        [[UIApplication sharedApplication] scheduleLocalNotification:note];

我试验那个alertAction并没有见到效果(后面做应用用到本地notification时再研究)。

 五、视图控制器相关的生命周期方法

1)didFinishLaunchingWithOptions

  该方法用于设置和初始化应用窗口的根视图控制器,会在应用启动完毕时调用一次。

2)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

  是UIViewController的指定初始化方法

3)loadView

  覆盖该方法,使用代码方式设置试图控制器的View属性,

4)viewDidLoad(视图控制器加载完NIB文件之后调用)

  覆盖该方法,设置使用NIB对象创建的视图对象,该方法会在试图控制器加载完视图后被调用。

5)ViewWillAppear(视图控制器的view被添加到应用窗口前被调用)

  覆盖该方法,设置使用NIB对象创建的视图对象,和viewDidLoad的区别是:viewDidLoad只会在视图被夹在时调用,而ViewWillAppear每次视图显示到window时都会被调用。

6)viewDidAppear(视图控制器的view已经被添加到应用窗口)

7)viewWillDisappear(视图控制器的view在将要从窗口移除时调用)

8)viewDidDisappear(视图控制器的view在已经从窗口移除时调用)

六、为视图添加运动效果

直接上代码:

        //添加视觉差效果
        UIInterpolatingMotionEffect *motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];

        motionEffect.minimumRelativeValue = @(-25);
        motionEffect.maximumRelativeValue = @(25);

        [label addMotionEffect:motionEffect];

        //添加视觉差效果
        motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];

        motionEffect.minimumRelativeValue = @(-25);
        motionEffect.maximumRelativeValue = @(25);

        [label addMotionEffect:motionEffect];
时间: 2024-10-06 23:59:34

【IOS开发—视图控制器】的相关文章

IOS开发—视图控制器左边缘右滑pop出栈

IOS视图控制器左边缘右滑pop出栈 IOS7.0之后,苹果优化了一个小功能,就是对于UINavagationController堆栈里的UIViewController,只要轻轻在视图控制器的左边缘右滑一下,该视图控制器就会pop出栈(前提当然是对于非根视图控制器而言).实现方法很简单,一句话搞定: self.navigationController.interactivePopGestureRecognizer.enabled = YES; 事实上对于一个视图控制器而言,该属性的默认值即为Y

IOS开发--视图控制器和基础视图

一.视图控制器 UIViewController的介绍: UIViewController即视图控制器,它在MVC(Model View Controller)模式中充当控制者的角色,它负责控制视图的显示,以及响应用户在该视图中所有可能的动作.使用视图控制器,我们可以很方便的管理视图及其子视图. UIViewController的生命周期: 运行APP--载入视图loadView--调用viewDidLoad方法--调用viewWillAppear方法--调用viewDidAppear方法--正

iOS开发:控制器间的数据传递

在iOS开发中遇到的控制器间的数据传递主要有两种情况:顺传递与逆传递.顺传递是指数据的传递方向和控制器的跳转方向相同(如图1):逆传递是指数据的传递方向和控制器的跳转方向相反(如图2).这里分别介绍这两种传递方式的具体做法. 顺传递 如果是用的SB,顺传递较简单,只需在A控制器的prepareForSegue:sender:方法中根据segue参数取得destinationViewController,也就是目标控制器C,直接给控制器C传递数据.从A传来的数据要在C的viewDidLoad方法中

iOS UI03_UIViewController视图控制器

// //  AppDelegate.m //  UI03_UIViewController视图控制器 // //  Created by dllo on 15/7/31. //  Copyright (c) 2015年 zhozhicheng. All rights reserved. // #import "AppDelegate.h" #import "RootViewController.h" @interface AppDelegate () @end @

iOS开发 - UIViewController控制器管理

创建一个控制器 控制器常见的创建方式有以下几种 //通过storyboard创建 //直接创建 ViewController *vc = [[ViewController alloc] init]; //指定xib文件来创建 ViewController *vc = [ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; 通过storyboard创建控制器 //先加载storyboard文件(Test是

iOS开发之控制器创建与加载(生命周期)

1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController alloc] init]; (3)指定xib文件来创建 MJViewController *mj = [[MJViewController alloc] initWithNibName: @"MJViewController" bundle:nil]; 注意,创建xid后还要设置xid中哪个vi

【IOS开发—视图】

一.UIWindow对象 每一个app都有一个UIWindow对象,它像一个容器一样,用来包含应用中的所有视图,应用会在启动时创建并设置UIWindow对象. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for customization after application launc

iOS开发中控制器切换方式Modal

简介 在iPhone开发中 Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 在iPad开发中 Modal的使用频率也是非常高的 对比iPhone开发,Modal在iPad开发中多了一些用法 呈现样式 什么叫呈现样式 Modal出来的控制器,最终显示出来的样子 Modal常见有4种呈现样式 UIModalPresentationFullScreen :全屏显示(默认) UIModalPresentationPageSheet 宽度:竖屏时的宽度(768

iOS开发——导航控制器返回按钮,返回到指定界面

大家都知道导航控制器中的返回按钮,会返回到上一个页面,但有时项目中有特殊要求,需要返回到指定的页面,我是这么实现的. 1. 首先是监听这个返回按钮的方法,我是通过自定义返回按钮监听的. //    自定义返回按钮 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back-1x"] style:(UIBarButtonItemStyleD