自定义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

视图控制器及屏幕旋转相关推荐

  1. 集合视图控制器(CollectionViewController) 、 标签控制器(TabBarController) 、 高级控件介绍...

      1 创建集合视图,设置相关属性以满足要求 1.1 问题 集合视图控制器UIConllectionViewController是一个展示大量数据的控制器,系统默认管理着一个集合视图UICollect ...

  2. iOS屏幕旋转及其基本适配方法

    屏幕旋转示例.jpeg 前段时间抽空总结了一下iOS视频播放的基本用法,发现这其中还有一个我们无法绕过的问题,那就是播放界面的旋转与适配.的确,视频播放与游戏类型的App经常会遇到这个的问题.由于至今 ...

  3. ios 旋转屏幕试图切换_iOS屏幕旋转及其基本适配方法

    屏幕旋转示例.jpeg 前段时间抽空总结了一下iOS视频播放的基本用法,发现这其中还有一个我们无法绕过的问题,那就是播放界面的旋转与适配.的确,视频播放与游戏类型的App经常会遇到这个的问题.由于至今 ...

  4. iOS6以上屏幕旋转详解

    屏幕旋转的研究理由: 因为本人从事视频类的iOS开发工作,经常项目中经常会遇到需要在不同的页面对屏幕方向进行控制,例如正常的列表页面都只支持竖屏不能旋转,而播放页面需要能够控制旋转 : - 手动点击全 ...

  5. [转]iOS 视图控制器转场详解

    转自:http://blog.devtang.com/2016/03/13/iOS-transition-guide/ 前言 屏幕左边缘右滑返回,TabBar 滑动切换,你是否喜欢并十分依赖这两个操作 ...

  6. iOS监听屏幕旋转的几种方法

    //通过控制器得到屏幕旋转状态 //获取将要旋转的状态 -(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterf ...

  7. UI一揽子计划 3 (自定义视图、UIViewControllor、屏幕旋转判断和重布局)

    一.UIView自定义视图      因为在实际开发过程中,可能由于繁琐的创建相同的Label.textfield和Button组合,为了实现编程工作的高效率,我们可以自定义视图,并且将它们封装起来. ...

  8. iOS翻页视图控制器UIPageViewController的应用

    2019独角兽企业重金招聘Python工程师标准>>> iOS翻页视图控制器UIPageViewController的应用 一.引言 UIPageViewController是iOS ...

  9. 分割视图控制器(UISplitViewController)

    这种控制器只能用于iPad,它可以在iPad屏幕中显示两个不同的场景:在横向模式下,左边显示一个表,供用户选择:用户选择表中的元素后,详细视图将显示该元素的详细信息.如果iPad被旋转到纵向模式,表将 ...

最新文章

  1. R语言散点图可视化:自定义标题和标签、拟合回归线、lowess为散点图添加平滑拟合线、修改散点图中点颜色和点符号、分组散点图、添加图例、pairs可视化散点图矩阵、ggplt2可视化、lattice
  2. QMainWindow多线程demo
  3. PHP-开发环境搭建
  4. 深度学习(十三)caffe之训练数据格式
  5. 【杂谈】菜鸟误入linux会有哪些惨痛的经历
  6. Python高阶函数和eval函数
  7. ios15 LJScrollPageVC第三方框架的使用
  8. Java 11 正式发布,新特性解读
  9. 基于微服务架构、运行于容器中的.NET Core示例应用eShopOnContainers
  10. 在Mac上安装ie10浏览器
  11. 库存管理中的 (s, S) 策略,K convex,K 凸
  12. 数据分析模型篇—安索夫矩阵
  13. 解决:outlook邮件内容过宽,打印不全
  14. 群晖NAS 7.X版搭建博客网站,并内网穿透发布公网可访问 8-8
  15. 如何用计算机计算平均温差,传热平均温差的计算
  16. 新款文章,绝无仅有!微信语音aud文件转换为mp3格式
  17. 新学期,新FLAG | 尽人事,听天命,守得云开见月明
  18. 北航计算机学院李卫国,北航学生评选“心目中最爱戴的老师”
  19. 新科技计算机学校备课,基于互联网计算机技术的集体备课模式在中职院校中的应用研究...
  20. 为什么要写房卡麻将系列文章

热门文章

  1. 树莓派3B 系统安装及初始化配置教程
  2. Python 3.3.2 中文版
  3. 对python里的装饰器
  4. nyoj298_点的变换_错误
  5. 关于string的成员函数substr
  6. 作用域安全的构造函数
  7. Java学习日记----反射
  8. GC优化利器 - HBase2.0全链路offheap
  9. http headers详解
  10. Java EE(五)