【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 = ;
//设置时区
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开发—视图控制器】的更多相关文章
- 玩转iOS开发 - 视图控制器生命周期
视图控制器生命周期
- ios开发----视图的生命周期
熟悉web开发的朋友可能对页面page的生命周期有一定的了解和认识,正如web开发中的页面生命周期一样,移动客户端开发也有它自己的生命周期.下文将说明ios开发中视图的生命周期既运行顺序. 在ios视 ...
- iOS UI-(多)视图控制器的生命周期、加载方法和模态视图方法以及屌丝方法
#import "ViewController.h" #import "SecondViewController.h" @interface ViewContr ...
- iOS 在视图控制器里面判断 应用程序的前台 后台切换 UIViewController
1.时机 用户点击home 键 应用退到后台 再次点击进入前台 在UIViewController里面 控制器如何获取相关的事件? 2.需求 (1)NSTimer 在应用程序进入后台 10秒 ...
- ios 导航视图控制器 跳转
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoa ...
- iOS开发之控制器创建与加载(生命周期)
1.如何创建一个控制器 控制器常见的创建方式有以下几种: (1)通过storyboard创建 (2)直接创建 MJViewController *mj = [[MJViewController all ...
- iOS开发 - UIViewController控制器管理
创建一个控制器 控制器常见的创建方式有下面几种 //通过storyboard创建 //直接创建 ViewController *vc = [[ViewController alloc] init]; ...
- iOS开发中控制器切换方式Modal
简介 在iPhone开发中 Modal是一种常见的切换控制器的方式 默认是从屏幕底部往上弹出,直到完全盖住后面的内容为止 在iPad开发中 Modal的使用频率也是非常高的 对比iPhone开发,Mo ...
- 【IOS开发—视图】
一.UIWindow对象 每一个app都有一个UIWindow对象,它像一个容器一样,用来包含应用中的所有视图,应用会在启动时创建并设置UIWindow对象. - (BOOL)application: ...
随机推荐
- Spring Boot 2.X(三):使用 Spring MVC + MyBatis + Thymeleaf 开发 web 应用
前言 Spring MVC 是构建在 Servlet API 上的原生框架,并从一开始就包含在 Spring 框架中.本文主要通过简述 Spring MVC 的架构及分析,并用 Spring Boot ...
- A-06 最小角回归法
目录 最小角回归法 一.举例 二.最小角回归法优缺点 2.1 优点 2.2 缺点 三.小结 更新.更全的<机器学习>的更新网站,更有python.go.数据结构与算法.爬虫.人工智能教学等 ...
- String的常见面试题
下面代码,是我前些天在网上搜集的一小部分String的面试题.个人觉得感触很深,希望对大家有所帮助.不好的也请大家批评指正. package com.zys.string; public class ...
- 前端深入之css篇丨2020年前,彻底掌握css动画【animation】
写在前面 马上就2020年了,不知道小伙伴们今年学习了css3动画了吗? 说起来css动画是一个很尬的事,一方面因为公司用css动画比较少,另一方面大部分开发者习惯了用JavaScript来做动画,所 ...
- CentOS 7.7版本中NAT上网问题
一.NAT(地址转换模式)概念 如果你的网络ip资源紧缺,但是你又希望你的虚拟机能够联网,这时候NAT模式是最好的选择.NAT模式借助虚拟NAT设备和虚拟DHCP服务器,使得虚拟机可以联网. 二.具体 ...
- npm install bcrypt报错
gyp ERR! stack Error: Can't find Python executable "python", you can set the PYTHON env va ...
- 攻防世界(XCTF)WEB(进阶区)write up(二)
国庆就要莫得了 起床刷几道 NewsCenter mfw Training-WWW-Robots NaNNaNNaNNaN-Batman bug NewsCenter search传参那里发现有注 ...
- PHP 哈夫曼的实现
<?php namespace Test; use Iterator; use ArrayAccess; use Exception; // 叶子结点或者连接结点的基类 class Huffma ...
- [TYVJ2340] 送礼物 - 双向搜索
题目限制 时间限制 内存限制 评测方式 题目来源 1000ms 131072KiB 标准比较器 Local 题目描述 作为惩罚,GY被遣送去帮助某神牛给女生送礼物(GY:貌似是个好差事)但是在GY看到 ...
- Spring Cloud Alibaba(二) 配置中心多项目、多配置文件、分目录实现
介绍 之前Spring Cloud Config基础篇这篇文章介绍了Spring Cloud Config 配置中心基础的实现,今天继续聊下Spring Cloud Config 并结合nacos做服 ...