• iOS基础-自定义视图、视图控制器


    自定义视图

    例如,登陆页面中,左边label,右边textField。自定义

    @interface LTView : UIView
    
    @property (nonatomic,retain) UILabel *label;
    @property (nonatomic,retain) UITextField *textField;
    
    - (instancetype)initWithFrame:(CGRect)frame text:(NSString *)text placeHolder:(NSString *)placeHolder;
    
    
    @end
    


     @implementation LTView
    - (instancetype)initWithFrame:(CGRect)frame{
        self = [super initWithFrame:frame];
        if (self) {
            //定义宽和高
            CGFloat w = frame.size.width;
            CGFloat h = frame.size.height;
            self.label = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, w/3 - 15, h - 10)];
            [self addSubview:self.label];
            
            self.textField = [[UITextField alloc]initWithFrame:CGRectMake(w/3 - 5, 5, 3*w / 3, h - 10)];
            self.textField.layer.cornerRadius = 8;
            self.textField.layer.borderWidth = 1;
            [self addSubview:self.textField];
            
            [self.label release];
            [self.textField release];
            
        }return self;
    }

    - (void)dealloc{
        [self.label release];
        [self.textField release];
        
        [super dealloc];
    }



    - (instancetype)initWithFrame:(CGRect)frame text:(NSString *)text placeHolder:(NSString *)placeHolder{
        self = [self initWithFrame:frame];
        if (self) {
            self.label.text = text;
            self.textField.placeholder = placeHolder;
        }
        return self;
        
    }

    视图控制器

    概述UIViewController:视图控制器

    控制视图显示,响应时间

    分担AppDelegate的工作

    实现模块独立,提高复用性

    功能

    控制视图大小变化,布局视图,响应事件

    检测以及处理内存警告

    检测以及处理屏幕旋转

    检测视图的切换

    MVC概述

    UIViewController是MVC设计模式的核心

    MVC是一个框架级的设计模式

    M是Model,主要用于建立数据模型

    V是View,View主要功能是展示数据

    C是控制器,主要是控制M和V的通信

    UIViewController自带一个空的View,与需求不符合,

    视图控制器只负责控制视图显示,响应事件

    所以使用自定义视图类:

    1.自定义视图继承UIView,在初始化方法中添加子视图控件

    2.重写controller的loadView方法,创建自定义试图对象,并指定为controller的View

    3.将子视图控件对象设置为自定义视图类的属性,在viewDidLoad方法中进行设置

    @implementation ViewController
    
    
    -(instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil{
        self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
        if (self) {
            NSLog(@"1 ");
        }return self;
    }
    
    - (void)loadView{
        [super loadView];
        //重写
        UIView *view = [[UIView alloc]initWithFrame:[UIScreen mainScreen].bounds];
        view.backgroundColor = [UIColor brownColor];
        self.view = view;
        NSLog(@"2");
    }
    -(void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:YES];
        NSLog(@"3");
    }
    - (void)viewDidAppear:(BOOL)animated{
        [super viewDidAppear:YES];
        NSLog(@"4");
    }
    
    //视图控制器功能一、
    //1.检测并响应时间
    //2.视图的整体布局
    //3.检测屏幕旋转
    //4.检测并处理内存警告
    
    //1.屏幕能否旋转(默认旋转)
    - (BOOL)shouldAutorotate{
        return YES;
    }
    //屏幕能旋转的方向
    - (NSUInteger)supportedInterfaceOrientations{
        return UIInterfaceOrientationMaskAllButUpsideDown;
    }
    
    //内存警告
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        //如果视图被加载,而且视图没有显示,将其release
        if ([self isViewLoaded] == YES && self.view.window == nil) {
            self.view = nil;
        }
        // Dispose of any resources that can be recreated.
    }
    
  • 相关阅读:
    前端学习之路,前端开发人员如何在团队中规范git commit提交记录
    基于AntV图表库的Ant DeSign Charts图表展示的简单应用
    基于React-Amap组件库的高德地图简单应用
    高效的Coding,前端开发人员值得一看的前端开发工具
    解决git pull拉取更新代码失败,unable to resolve reference ‘refs/remotes/origin/xxx分支名’: reference broken问题
    position: sticky实现导航栏下滑吸顶效果
    javaScript保留三位有效数字
    封装属于自己的axios请求
    微博立场检测 60分Baseline
    Sequence to Sequence Learning with Neural Networks论文阅读
  • 原文地址:https://www.cnblogs.com/dingjianjaja/p/4840735.html
Copyright © 2020-2023  润新知