UIViewController和屏幕旋转

UIViewController

视图控制器,程序界面的基础,每一个视图控制器代表着一个界面,每个界面的布局和业务逻辑我们都可以写在与之对应的控制器中,起到了代码分离,逻辑更加清晰的作用,同时也大大的分担了AppDelegate的压力
根视图控制器,每个应用程序只会有一个,相当于程序一运行就想显示出来的界面
loadView
这个方法 相当于把控制器self.view进行赋值
我们在没有重写的时候,会自动执行一遍父类的loadView ,所以才能够在下面使用self.view
如果我们重写了loadView方法,程序就会执行我们重写的loadView,如果这个重写的方法中,我们没有self.view = xxx的过程,程序就会崩溃

- (void)loadView{
    [super loadView];
    RootView *rootView = [[RootView alloc] init];
    self.view = rootView;
    [rootView release];
}

viewDidLoad
是视图加载的时候 会自动调用的方法
每一个视图控制器 都会有一个自带的view并且与屏幕同宽同高
我们铺界面的操作一般都写在这个方法中
当我们使用self.view addSubview:rootView时,是给控制器自带的view添加子视图,不会根据屏幕改变frame值
当我们使用self.view = rootView 时,是给控制器自带的view赋值,rootView会自动变成与屏幕同宽同高,并且会随着屏幕的旋转而变化;

- (void)viewDidLoad{
    [super viewDidLoad];
    //进行相关界面设置
}

viewWillAppear:
视图将要出现时自动调用的方法

-(void)viewWillAppear:(BOOL)animated{
    [super viewWillAppear:animated];
    NSLog(@"视图将要出现");
}

viewDidAppear:
视图已经出现

- (void)viewDidAppear:(BOOL)animated{
    [super viewDidAppear:animated];
    NSLog(@"视图已经出现");
}

viewWillDisappear:
视图将要消失

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    NSLog(@"视图将要消失");
}

viewDidDisappear:
视图已经消失

- (void)viewDidDisappear:(BOOL)animated{
    [super viewDidDisappear:animated];
    NSLog(@"视图已经消失");
}

以上四个方法,一般情况下不会重写,只有在我们有特殊需要的时候才会重写
viewController之间的切换
在没有navigation和tabBar的时候,我们一般用的是presentViewController: animated: completion:方法

- (void)buttonAction{
    SecondViewController *SVC = [[SecondViewController alloc] init];
    [self presentViewController:SVC animated:YES completion:nil];
    [SVC release];
}

从第二个viewController返回时使用dismissViewControllerAnimated:completion:方法

- (void)button2Action{
    //我们进行界面跳转都是前面的界面需要后面的界面的对象,而进行返回时后面的界面不需要前面的界面的对象
    //几乎所有的跳转方式都是 一级一级的跳转 然后一级一级的返回
    [self dismissViewControllerAnimated:YES completion:nil];
}

给视图控制器添加子视图控制器
在给视图控制器添加子视图控制器时,也要将子视图控制器的view添加到父视图控制器的view的子视图组中

#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
UIViewController *first = [[UIViewController alloc] init];
first.view.frame = CGRectMake(0,0,kScreenWidth,kScreenHeight);
[self.view addSubview:first.view];
[self addChildViewController:first];
[first release];

屏幕旋转

步骤:
1.支持屏幕旋转 默认是支持
2.支持屏幕旋转的方向 默认支持三个方向 home键在左 home键在右

//设置是否支持屏幕旋转 默认是YES支持
- (BOOL)shouldAutorotate{
    return YES;
}

//支持旋转的方向
//配合工程文件的设置

- (UIInterfaceOrientationMask)supportedInterfaceOrientations{
    return UIInterfaceOrientationMaskAll;
}
配置文件.png

视图旋转时对界面进行重新铺设

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinatior:(id<UIViewControllerTransitionCoordinator>)coordinator{
    if (size.width > size.height) {
        NSLog(@"横屏");
        UIButton *btn = self.view.subviews[0];
        UITextField *tf = self.view.subviews[1];
        btn.frame = CGRectMake(100,100,100,100);
        tf.frame = CGRectMake(200,100,100,100);
    } else {
        NSLog(@"竖屏");
        UIButton *btn = self.view.subview[0];
        UITextField *tf = self.view.subview[1];
        btn.frame = CGRectMake(100,100,100,100);
        tf.frame = CGRectMake(100,200,200,100);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,701评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,649评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,037评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,994评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,018评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,796评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,481评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,370评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,868评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,014评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,153评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,832评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,494评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,039评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,156评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,437评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,131评论 2 356

推荐阅读更多精彩内容

  • /* UIViewController is a generic controller base class th...
    DanDanC阅读 1,814评论 0 2
  • 7、不使用IB是,下面这样做有什么问题? 6、请说说Layer和View的关系,以及你是如何使用它们的。 1.首先...
    AlanGe阅读 680评论 0 1
  • 1. 启动流程 1.1 准备知识 Mach-O Apple的操作系统的可执行文件格式几乎都是mach-o,mach...
    我有小尾巴快看阅读 3,206评论 1 37
  • 你本是哪徐徐的秋风, 卷起我前百年来的思念。 却不曾想, 为了你,要付出我多少葱郁的年华。 你本是哪久违的阳光, ...
    若橦阅读 294评论 0 1
  • 项目地址 C++类模板(1) 与函数模板类似,类也可以通过参数泛化,从而可以构建出一组不同型别的类实例(对象) 类...
    偷天神猫阅读 907评论 0 1