一、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 = ; //设置时区
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 = @(-);
motionEffect.maximumRelativeValue = @(); [label addMotionEffect:motionEffect]; //添加视觉差效果
motionEffect = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis]; motionEffect.minimumRelativeValue = @(-);
motionEffect.maximumRelativeValue = @(); [label addMotionEffect:motionEffect];

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

  1. 玩转iOS开发 - 视图控制器生命周期

    视图控制器生命周期

  2. ios开发----视图的生命周期

    熟悉web开发的朋友可能对页面page的生命周期有一定的了解和认识,正如web开发中的页面生命周期一样,移动客户端开发也有它自己的生命周期.下文将说明ios开发中视图的生命周期既运行顺序. 在ios视 ...

  3. iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法

    #import "ViewController.h" #import "SecondViewController.h" @interface ViewContr ...

  4. iOS 在视图控制器里面判断 应用程序的前台 后台切换 UIViewController

    1.时机  用户点击home 键  应用退到后台 再次点击进入前台  在UIViewController里面 控制器如何获取相关的事件? 2.需求 (1)NSTimer   在应用程序进入后台 10秒 ...

  5. ios 导航视图控制器 跳转

    import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...

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

    1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController all ...

  7. iOS开发 - UIViewController控制器管理

    创建一个控制器 控制器常见的创建方式有下面几种 //通过storyboard创建 //直接创建 ViewController *vc = [[ViewController alloc] init]; ...

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

    简介 在iPhone开发中 Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 在iPad开发中 Modal的使用频率也是非常高的 对比iPhone开发,Mo ...

  9. 【IOS开发—视图】

    一.UIWindow对象 每一个app都有一个UIWindow对象,它像一个容器一样,用来包含应用中的所有视图,应用会在启动时创建并设置UIWindow对象. - (BOOL)application: ...

随机推荐

  1. java中的Math.ceil、Math.floor和Math.round

    ceil意为天花板,指向上取整:floor意为地板,指向下取整:round指四舍五入 package com.company; public class Main { public static vo ...

  2. 52个有效方法(1) - 了解Objective-C语言的起源

    Objective-C语言使用的是"消息结构"而非"函数调用" "消息结构"和"函数调用"之间的区别 "消息结 ...

  3. js时间查询补充

    先来看下JS中的日期操作: var myDate = new Date(); myDate.getYear(); //获取当前年份(2位) myDate.getFullYear(); //获取完整的年 ...

  4. Java 多线程爬虫及分布式爬虫架构探索

    这是 Java 爬虫系列博文的第五篇,在上一篇 Java 爬虫服务器被屏蔽,不要慌,咱们换一台服务器 中,我们简单的聊反爬虫策略和反反爬虫方法,主要针对的是 IP 被封及其对应办法.前面几篇文章我们把 ...

  5. Java8 Period.between方法坑及注意事项

    在使用Java8 新特性中关于Period.between的方法时需注意该方法获取日期的区间问题. @Test public void test1(){ LocalDate from = LocalD ...

  6. Road Construction

    King Mercer is the king of ACM kingdom. There are one capital and some cities in his kingdom. Amazin ...

  7. 由一次线上故障来理解下 TCP 三握、四挥 & Java 堆栈分析到源码的探秘

    本文导读: 生产故障场景介绍 TCP 建连三次握手过程 TCP 断连四次挥手过程 结合 Java 堆栈剖析源码 再从堆栈中找到"罪魁祸首" 问题优化方案总结 1.生产故障场景介绍 ...

  8. 安卓控件 仪表盘控件 柱状图控件 曲线控件 xamarin.android 分类器 瓶子控件 报警控件 水箱控件 进度条控件等

    本篇博客主要介绍一个控件库,HslControls.dll 的界面,这个控件库支持winform,winform的参考另一篇文章:https://www.cnblogs.com/dathlin/p/1 ...

  9. 基于STL的堆略解

    什么是STL 以下内容摘自这儿. STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称.它是由Alexander Stepanov.Meng Le ...

  10. Vulnhub靶场渗透练习(二) Billu_b0x

    运行虚拟机直接上nmap扫描 获取靶场ip nmap 192.168.18.* 开放端口 TCP 22 SSH OpenSSH 5.9p1 TCP 80 HTTP Apache httpd 2.2.2 ...