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.
}
时间: 2024-09-29 11:02:04

iOS基础-自定义视图、视图控制器的相关文章

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析

iOS开发- 自定义遮罩视图(引导, 功能说明)源码+解析 我们平时使用App的时候, 经常在第一次使用的时候, 会有类似"新手教程"之类的东西, 来引导我们应该如何使用这个App. 但是这个"新手教程"不同于常规的引导页(引导页指第一次打开App时候, 弹出的那种介绍视图. 他是静态的, 不需要与用户交互, 可以直接一页页翻, 或者直接跳过.)所谓的"新手教程", 就是按照App的提示, 一步步跟着完成. 那这个"新手教程"

iOS基础-UIKit框架-多控制器管理-Modal

Modal Modal效果 一.Modal演示(代码)1.事前准备1>新建一个空项目,删除默认控制器文件2>自定义2个控制器,将ViewController的Class分别设置为这个类3>创建一个window,将其根控制器设置为第一个自定义的控制器.2.拖一个按钮,监听这个按钮并实现方法(用来跳转到第二个界面)-(IBAction)jump{ //展示第二个控制器界面 MJTwoController *two = [[MJTwoViewController alloc] init]: [

iOS基础之UIController(视图控制器)

个人认为视图控制器是比较重要的,那么我们先来了解下它的一些主要功能. 1.控制视图大小变换.布局视图.响应事件 2.检测以及处理内存警告 3.检测以及处理屏幕旋转 4.检测视图的切换 5.实现模块独立,提高复用性 视图控制器的第5个功能比较重要,运用的好的话能够给我们提供很大的方便. 如何创建UIController: //设置window的根视图控制器 //创建一个视图控制器 RootViewController *rootVC = [[RootViewController alloc]ini

iOS基础-UIKit框架-多控制器管理-控制器创建和控制器view的创建

掌握 一.控制器的多种创建方式如何创建一个控制器 通过storyboard创建注意:加载UIStoryboard仅仅是加载名称叫做Test的storyboard,并不会创建 storyboard中的控制器以及控件 通过xib创建注意:要想让xib里的view设置为所创建控制器的view,必须设置xib的File's owner 为所创建控制器.并且File's owner点右键将view连到xib里的view上.storyboard默认已经完成了上述操作 二.控制器view的创建方式1.没有同名

iOS基础-UIKit框架-多控制器管理-UINavigationController

一.导航控制器基本使用多控制器 导航控制器 导航控制器的简单使用1.创建一个空项目2.创建导航控制器nav3.设置导航控制器为Window的根控制器4.新建3个控制器类管理这3个View(勾上also create xib)在xib中添加一个标签用来注明是第几个控制器,添加一个按钮用来跳转到下一个控制器5.创建第一个控制器并添加到导航控制器中[nav pushViewController:one animated:YES]:6.监听用来跳转到第二个的按钮并实现方法-(IBAction)jump2

iOS基础-UIKit框架-多控制器管理-UITabBarController

UITabBarController UITabBarController的简单使用 一.UITabBarController的创建(利用代码)1.新建一个空项目,在MJAppDelegate.m的didFinishLaunch...方法中//1.创建tabbar控制器UITabBarController *tabbarVc = [[UITabBarController alloc] init]: //2.设置为window的根控制器self.window.rootViewController

iOS基础-UIKit框架-多控制器管理-Segue

一.什么是Segue? 二.Segue的属性 三.Segue的类型 四.自动型Segue(控件->控制器) 五.手动型Segue(控制器->控制器) 六.performSegueWithIdentifier:sender:

iOS基础项目之----图片控制器(控制图片的平移与缩放)

Main.storybord的大致布局如下: 代码部分: ViewController.m: #import "ViewController.h" //枚举 typedef enum{kUpButton=1,kDownButton,kLeftButton,kRightButton,kMinifyButton,kPlusButton,kLeftRotateButton,kRightRotateButton}kTag; @interface ViewController () @prope

UI第三讲.自定义视图 视图控制器指定自定义view 检测屏幕旋转 处理内存警告 容器视图控制器

一.自定义视图 (自定义label-textField视图) 目的:为了进一步优化登录界面,提高代码的精简程度和复用性,可移植性,从而需要在原有视图控件的基础之上自由组合成自定义视图. 一般自定义的视图会继承于UIView.以下是自定义视图的要点和步骤: 1.创建一个UIView子类 2.在类的初始化方法中添加子视图 3.类的.h文件提供一些接口(方法),便于外界操作子视图. 例子及相应代码: 例题:假设我们使用LTView类代表label-textfield视图.创建一个LTView类继承于U