视图控制器及屏幕旋转
自定义View中
@implementation Rootview
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
self.button = [UIButton buttonWithType:UIButtonTypeSystem];
self.button.frame = CGRectMake(100, 100, 100, 30);
[self.button setTitle:@"跳转" forState:UIControlStateNormal];
[self addSubview:_button];
self.textField = [[UITextField alloc]initWithFrame:CGRectMake(100, 200, 200, 30)];
self.textField.borderStyle = UIButtonTypeRoundedRect;
self.textField.placeholder = @"请输入";
[self addSubview:_textField];
[self.textField release];
}
return self;
}
// 重写layoutSubviews
// 当视图被初始化的时候 系统会自动调用此方法
// 当视图frame改变的时候 系统会自动调用此方法
// 当我们frame改变 系统会调用此方法 系统内部还会自己再调用一次
- (void)layoutSubviews
{
[super layoutSubviews];
// 获得的是设备的方向
// 方向分为四种
// 1.home建在下 2.home建在上 3.home建在左 4.home建在右
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
switch (orientation)
{
case UIInterfaceOrientationPortrait:
NSLog(@"home建在下");
break;
case UIInterfaceOrientationPortraitUpsideDown:
NSLog(@"home建在上");
break;
case UIInterfaceOrientationLandscapeLeft:
NSLog(@"home建在左");
break;
case UIInterfaceOrientationLandscapeRight:
NSLog(@"home建在右");
break;
default:
break;
}
}
// loadView 系统内部的方法中 实现了给控制器的View进行了赋值
// 此时此刻 我们进行了重写 如果不在自己重写的loadview方法中 出现给self.view = xxx 的赋值过程 那么之后我们在操作self.view的时候 相当于在操作空指针 会导致程序崩溃
// 程序的执行顺序 如果有loadView 会先走loadView方法 再走viewDidLoad的方法 然后会走视图将要出现 然后再走视图已经出现
- (void)loadView
{
self.rootView = [[Rootview alloc]init];
self.rootView.backgroundColor = [UIColor greenColor];
self.view = _rootView;
[_rootView release];
}
// viewDidLoad 视图被加载的时候 会自动调用的方法
//比较常用的是viewDidLoad
- (void)viewDidLoad {
// [super viewDidLoad];
// // Do any additional setup after loading the view.
// // 每一个视图控制器 都有一个自己自带的UIView 我们把所有的空间 都需要铺放到视图控制器自带的View上
// // 每一个视图控制器 在以后我们实际开发中 相当于一个界面 一个视图控制器 对应一个界面
// // 视图控制的主要作用:1.分担AppDelegate的工作量抽离代码 2.更好的实现了界面之间的划分
self.view.backgroundColor = [UIColor redColor];
// UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
// button.frame = CGRectMake(100, 100, 100, 30);
// [button setTitle:@"跳转" forState:UIControlStateNormal];
// [button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
// [self.view addSubview:button];
//[button release];
// 创建自定义视图类的对象
self.rootView = [[Rootview alloc]initWithFrame:[[UIScreen mainScreen]bounds]];
//self.rootView.backgroundColor = [UIColor greenColor];
[self.rootView.button addTarget:self action:@selector(buttonAction:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_rootView];
[_rootView release];
self.rootView.textField.delegate = self;
}
#pragma mark ---点击return回收键盘---
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder];
return YES;
}
#pragma mark ---点击空白回收键盘---
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
[self.rootView.textField resignFirstResponder];
}
#pragma mark --- button触发方法---
- (void)buttonAction:(UIButton *)button
{
// 创建第二个界面的对象 从第一个界面跳转到第二个界面
// 每回点击跳转 都需要重新创建一个对象 保证对象每一回都是新的
// SecondViewController *secondViewController = [[SecondViewController alloc]init];
// [self presentViewController:secondViewController animated:YES completion:nil];
//
// /*
// [self presentViewController:secondViewController animated:YES completion:^{// 在跳转完成的同时附加的效果
// self.view.backgroundColor = [UIColor greenColor];
// }];
// */
// [secondViewController release];
SecondViewController *secondViewController = [[SecondViewController alloc]init];
[self presentViewController:secondViewController animated:YES completion:nil];
[secondViewController release];
}
#pragma mark ---视图出现或者消失的时候会自动调用的方法---
// 视图将要出现
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
NSLog(@"第一个界面将要出现");
}
// 视图已经出现
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
NSLog(@"第一个界面已经出现");
}
// 视图将要消失
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
NSLog(@"第一个界面将要消失");
}
// 视图已经消失
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
NSLog(@"第一个界面已经消失");
}
#pragma mark ---屏幕旋转-----
// 屏幕旋转需要几个步骤
// 1.支持屏幕旋转
// 默认是YES 如果是NO 不支持屏幕旋转
- (BOOL)shouldAutorotate
{
return YES;
}
// 2.支持旋转的方向
-(UIInterfaceOrientationMask)supportedInterfaceOrientations
//- (NSUInteger )supportedInterfaceOrientations
{
// 支持所有的方向
// 工程设置里的方向支持 我们也要勾选上
//return UIInterfaceOrientationMaskAll;
return UIInterfaceOrientationMaskAllButUpsideDown;
}
// 已经弃用方法
// 设备将要旋转时 会自动调用的方法 iOS8之后已经弃用 强打还能够实现
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
NSLog(@"设备将要旋转");
}
// 设备已经旋转时 会自动调用的方法 iOS8之后已经弃用 强打还能够实现
- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
NSLog(@"设备已经旋转到目标方向");
}
#pragma mark --- 新的屏幕旋转方法---
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
if (size.width > size.height)
{
NSLog(@"横屏");
}
else
{
NSLog(@"竖屏");
}
}
转载于:https://www.cnblogs.com/star001/p/5211170.html
视图控制器及屏幕旋转相关推荐
- 集合视图控制器(CollectionViewController) 、 标签控制器(TabBarController) 、 高级控件介绍...
1 创建集合视图,设置相关属性以满足要求 1.1 问题 集合视图控制器UIConllectionViewController是一个展示大量数据的控制器,系统默认管理着一个集合视图UICollect ...
- iOS屏幕旋转及其基本适配方法
屏幕旋转示例.jpeg 前段时间抽空总结了一下iOS视频播放的基本用法,发现这其中还有一个我们无法绕过的问题,那就是播放界面的旋转与适配.的确,视频播放与游戏类型的App经常会遇到这个的问题.由于至今 ...
- ios 旋转屏幕试图切换_iOS屏幕旋转及其基本适配方法
屏幕旋转示例.jpeg 前段时间抽空总结了一下iOS视频播放的基本用法,发现这其中还有一个我们无法绕过的问题,那就是播放界面的旋转与适配.的确,视频播放与游戏类型的App经常会遇到这个的问题.由于至今 ...
- iOS6以上屏幕旋转详解
屏幕旋转的研究理由: 因为本人从事视频类的iOS开发工作,经常项目中经常会遇到需要在不同的页面对屏幕方向进行控制,例如正常的列表页面都只支持竖屏不能旋转,而播放页面需要能够控制旋转 : - 手动点击全 ...
- [转]iOS 视图控制器转场详解
转自:http://blog.devtang.com/2016/03/13/iOS-transition-guide/ 前言 屏幕左边缘右滑返回,TabBar 滑动切换,你是否喜欢并十分依赖这两个操作 ...
- iOS监听屏幕旋转的几种方法
//通过控制器得到屏幕旋转状态 //获取将要旋转的状态 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterf ...
- UI一揽子计划 3 (自定义视图、UIViewControllor、屏幕旋转判断和重布局)
一.UIView自定义视图 因为在实际开发过程中,可能由于繁琐的创建相同的Label.textfield和Button组合,为了实现编程工作的高效率,我们可以自定义视图,并且将它们封装起来. ...
- iOS翻页视图控制器UIPageViewController的应用
2019独角兽企业重金招聘Python工程师标准>>> iOS翻页视图控制器UIPageViewController的应用 一.引言 UIPageViewController是iOS ...
- 分割视图控制器(UISplitViewController)
这种控制器只能用于iPad,它可以在iPad屏幕中显示两个不同的场景:在横向模式下,左边显示一个表,供用户选择:用户选择表中的元素后,详细视图将显示该元素的详细信息.如果iPad被旋转到纵向模式,表将 ...
最新文章
- R语言散点图可视化:自定义标题和标签、拟合回归线、lowess为散点图添加平滑拟合线、修改散点图中点颜色和点符号、分组散点图、添加图例、pairs可视化散点图矩阵、ggplt2可视化、lattice
- QMainWindow多线程demo
- PHP-开发环境搭建
- 深度学习(十三)caffe之训练数据格式
- 【杂谈】菜鸟误入linux会有哪些惨痛的经历
- Python高阶函数和eval函数
- ios15 LJScrollPageVC第三方框架的使用
- Java 11 正式发布,新特性解读
- 基于微服务架构、运行于容器中的.NET Core示例应用eShopOnContainers
- 在Mac上安装ie10浏览器
- 库存管理中的 (s, S) 策略,K convex,K 凸
- 数据分析模型篇—安索夫矩阵
- 解决:outlook邮件内容过宽,打印不全
- 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8
- 如何用计算机计算平均温差,传热平均温差的计算
- 新款文章,绝无仅有!微信语音aud文件转换为mp3格式
- 新学期,新FLAG | 尽人事,听天命,守得云开见月明
- 北航计算机学院李卫国,北航学生评选“心目中最爱戴的老师”
- 新科技计算机学校备课,基于互联网计算机技术的集体备课模式在中职院校中的应用研究...
- 为什么要写房卡麻将系列文章