• iOS中的屏幕的旋转(UIViewController)横屏竖屏


    RootViewController

    //视图控制器(UIViewController):它不是视图,用来管理视图,所以屏幕上看不到,但是自身携带一个视图(根视图)
    #import "RootViewController.h"
    #import "LoginView.h"
    //视图控制器的延展
    @interface RootViewController ()
    
    @end
    //视图控制器的实现部分
    @implementation RootViewController
    
    //用来加载视图控制器的根视图,此方法源于父类
    - (void)loadView
    {
        LoginView *logview = [[LoginView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
        //指定刚才创建的  自定义视图 对象为当前视图控制器的根视图
        self.view = logview;
        
        [logview release];
    }
    
    //该方法是在loadView执行完之后立即执行的方法
    //当访问视图控制器的View为空,一但发现View为空,立即调用loadView来加载根视图
    //如果要自定义视图控制器的根视图,只需要重写loadView方法,在loadView方法中完成创建,并指定当前试图控制器的根视图即可
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view.
        NSLog(@"%s,%d",__FUNCTION__,__LINE__);
       // self.view.backgroundColor = [UIColor redColor];
    
    
        
    }
    #pragma mark -- 检测和处理屏幕的旋转
    //1.设置屏幕支持的旋转方向
    - (NSUInteger)supportedInterfaceOrientations{
        return UIInterfaceOrientationMaskAll;
        
    }
    //开始旋转时会触发的方法
    //经常用来暂停播放器播放,暂停视屏播放,以及关闭用户交互
    
    - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
          [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    }
    //当旋转结束是时触发
    //继续音乐,视频播放,以及打开的用户交互
    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation{
        [super didRotateFromInterfaceOrientation:fromInterfaceOrientation];
    }
    
    //当将要开始旋转做动画时触发,经常用来在旋转时添加自定义动画
    - (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
        
        
        
        [super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
        
        
        
    }
    #pragma ---视图控制器控制布局视图的方法
    //当视图旋转时,视图控制器触发的方法,用于重新布局视图控制器根据视图上得子视图
    - (void)viewWillLayoutSubviews{
        [super viewWillLayoutSubviews];
    }
    
    
    
    
    
    
    
    
    
    
    
    //当视图控制器收到内存警告时触发
    //释放之前未使用的空间,以及可以重建的对象.
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
        //1.视图控制器的根视图是够已经成功加载
        //2.当前根视图是否正在显示
        //[self isViewLoaded]判断视图是否成功加载
        //self.view.window,判读视图是否在当前界面
        //内存加载成功,且不在当前界面
        if ([self isViewLoaded] && !self.view.window) {
            [self.view release];
        }
    }
    
    
    
    @end

    LoginView.h

    #import <UIKit/UIKit.h>
    
    @interface LoginView : UIView
    //最简单的自定义视图封装:直接将控件声明为属性,在.h中声明外界访问的接口.
    @property (nonatomic,retain) UILabel *aLabel;
    @property (nonatomic, retain)UITextField *textField;
    @property (nonatomic, retain)UIButton *loginBtn;
    @end

    LoginView.m

    #import "LoginView.h"
    #define kMargin_Left_Label      30
    #define kMargin_Top_Label       100
    #define kWidth_Label            60
    #define kHeight_Label           30
    #define kMargin_Left_TextField  (kMargin_Left_Label + kWidth_Label + 20)
    #define kMargin_Top_TextField   100
    #define kWidth_TextField        150
    #define kHeight_TextField       30
    #define KMargin_Left_Button     100
    #define kmargin_Top_Button      (kMargin_Top_Label + kHeight_Label + 30)
    #define kWidth_Button           80
    #define kHeight_Button          40
    @implementation LoginView
    
    
    //原则:如果重写父类继承来方法是,如果不知道父类对该方法的事项,则调用父类对该方法的实现(super).
    
    - (instancetype)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if(self)
        {
            [self setupLabel];
            
            [self setupButton];
            
            [self setupTextField];
        }
        return self;
    }
    
    //用户名Label
    - (void)setupLabel
    {
        self.aLabel = [[UILabel alloc] init];
        self.aLabel.text = @"用户名";
        self.aLabel.frame = CGRectMake(kMargin_Left_Label,kMargin_Top_Label , kWidth_Label, kHeight_Label);
        [self addSubview:self.aLabel];
        [self.aLabel release];
    }
    //输入框
    - (void)setupTextField{
        self.textField = [[UITextField alloc] init];
        self.textField.placeholder = @"请输入用户名";
        self.textField.borderStyle = UITextBorderStyleRoundedRect;
        self.textField.frame = CGRectMake(kMargin_Left_TextField, kMargin_Top_TextField, kWidth_TextField, kHeight_TextField);
        [self addSubview:self.textField];
        [self.textField release];
    }
    //登陆按钮
    - (void)setupButton
    {
        self.loginBtn = [UIButton buttonWithType:UIButtonTypeSystem];
        [self.loginBtn setTitle:@"登陆" forState:UIControlStateNormal];
        self.loginBtn.frame = CGRectMake(KMargin_Left_Button, kmargin_Top_Button, kWidth_Button, kHeight_Button);
        [self addSubview:self.loginBtn];
    }
    
    //该方法为视图的方法,当旋转时,视图会自动的调用该方法用来重新布局子视图.
    - (void)layoutSubviews{
        [super layoutSubviews];
        //1.获取当前屏幕所处的状态(旋转方向)
        UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
        //2.判断屏幕方向,调整子视图
        switch (orientation) {
            case UIInterfaceOrientationPortrait:
              //  NSLog(@"竖屏");
                //break;
                
         
            case UIInterfaceOrientationPortraitUpsideDown:
               // NSLog(@"倒置");
                self.loginBtn.frame = CGRectMake(KMargin_Left_Button, kmargin_Top_Button, kWidth_Button, kHeight_Button);
                break;
            case UIInterfaceOrientationLandscapeLeft:
               // NSLog(@"右横屏");
                //break;
           
            case UIInterfaceOrientationLandscapeRight:
               // NSLog(@"左横屏");
                 self.loginBtn.frame = CGRectMake(kMargin_Left_TextField + kWidth_TextField + 30, kMargin_Top_Label, kWidth_Button, kHeight_Button);
                break;
            default:
                break;
        }
    }
    
    - (void)dealloc
    {
        
        [_aLabel release];
        [_textField release];
        [_loginBtn release];
        [super dealloc];
        
    }
    @end
  • 相关阅读:
    X509IncludeOption 枚举
    SHA-1算法——(2)
    SHA-1算法
    消息摘要算法
    Oid 类
    @param注解
    类X509Certificate2
    sq分页
    svn不是内部或外部命令?
    PhpStorm配置svn:Can't use Subversion command line client:svn
  • 原文地址:https://www.cnblogs.com/wohaoxue/p/4764788.html
Copyright © 2020-2023  润新知