美文网首页程序员
UIViewController和屏幕旋转

UIViewController和屏幕旋转

作者: 每日总结 | 来源:发表于2016-03-19 17:49 被阅读2043次

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);
    }
}

相关文章

  • UIViewController和屏幕旋转

    UIViewController 视图控制器,程序界面的基础,每一个视图控制器代表着一个界面,每个界面的布局和业务...

  • iOS屏幕旋转控制,极简

    iOS屏幕旋转控制的简单实现,使用方式也非常简单,需要控制旋转的UIViewController遵守ShouldN...

  • iOS控制屏幕随意旋转和状态栏的控制

    1、屏幕旋转 使用有三个前提条件1、根控制是UIViewController2、根控制是UINavigationC...

  • iOS 屏幕旋转

    屏幕旋转 认知 期望达到的目的 如何让App支持屏幕旋转 如何让App屏幕旋转 如何保证屏幕旋转后布局不会乱 总结...

  • 屏幕旋转

    屏幕旋转 推荐文档 了解UIWindow——UIWindow实践 iOS屏幕旋转问题总结 IOS:屏幕旋转与变换 ...

  • iOS屏幕旋转之Apple Document(苹果文档翻译)

    应用场景一:指定UIViewController支持旋转或不旋转 实现方法如下: 文档说明:UIViewContr...

  • 代码控制屏幕横竖旋转

    屏幕旋转控制分动态旋转和手动代码控制旋转,多见于视频播放。 一 .APP设置 在配置中关闭屏幕方向。info.pl...

  • 屏幕旋转

    UIDevice.current.setValue(UIInterfaceOrientation.landscap...

  • 屏幕旋转

    import "AppDelegate.h" import "ViewController.h" @interfa...

  • 屏幕旋转

    在做工程的时候碰到了屏幕旋转的问题,如今已经解决.为大家分享一下 屏幕旋转机制流程 (1)加速计检测到方向变化,发...

网友评论

    本文标题:UIViewController和屏幕旋转

    本文链接:https://www.haomeiwen.com/subject/amktlttx.html