代码创建UI界面

UIKit框架

UIResponder

– UIApplication

– UIView
     •  UIWindow,UILabel,UIImageView,UIPickerViewUIAlertView,UIScrollVIew,UIProgressView,UIToolbar,UIWebView

• UIControl

– UIButton,UITextField,UISwitch,UISegementControl, UIPageControl,UISlider

– UIDatePicker

– UIViewController
     • UITabBarController,UINavigationController,UITableController

IOS的MVC模式

MVC是所有面向对象语言都应该遵守的规范,MVC思想将一个应用分成三个基本部分:Model,View,Controller,这三个部分一最少的耦合协同工作,从而提升应用的可扩展性和可维护性。起整体结构如图所示

MVC模式,江程序代码分类Model,View,Control三种组件。

Model组件:在进行IOS应用开发时,Model组件通常是一些普通的OC类,这些OC类空用于保存少量的应用程序状态数据,

View组件:在进行IOS应用开发时,主要使用Interface Bui来的人来创建视图组件。在某些特殊的情况下,程序也可以需要在代码中出创建界面,修改界面。

Control组件:大部分时候,控制器组件都会集成UIKit框架中的UIViewController基类,通过集成该基类,可以让控制器类直接获取大量的功能,并且不在需要重新设置累的结构。

窗口,视图,视图控制器

UIResponder是视图响应这的基类(继承自NSObject)

– UIApplication,UIView,UIViewController是子类,都可以作为响应者

UIView是视图的基类

—窗口的UI控件都是UIView的子类

UIViewController是视图控制器的基类

窗口UIWindow是UIView的子类

窗口的主要作用,一时作为视图的容器,包含视图,二是分发时间给视图,一个APP通常只有一个窗口,且必须有一个窗口,三是与视图控制器一起写作,呈现内容

创建window对象

——使用storyboard,自动创建

——不使用storyboard,手动创建

//创建一个全屏的window对象

self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];

在AppDelegate类中创建window对象

在其他位置不应该创建window对象,但是可以获取的

UIWindow *window = [[UIApplication sharedApplication] keyWindow];

视图控制器

视图控制器是视图和数据进行交互的控制器,在MVC模式中充当Controller角色

在所有视图控制器都是UIViewController的子类

一个APP需要一个window,而一个window需要一个跟试图控制器(window,rootViewController),作为首页或者第一屛

每个视图控制器包含一个根视图(view属性),其他视图都是根视图的子孙视图

——通过关联storybord中的ViewController

——通过关联xib

——通过手写代码

每个视图控制器应该对应一个界面和相应的业务

由于一个APP需要显示多个界面,所以一般会有多个视图控制器相互跳转

根视图控制器rootViewController

新建一个继承雨UIViewController的类,然后让程序的窗口加载并显示这个viewController视图控制器关联的用户界面。这个就是APP的跟试图控制器

UIViewController生命周期

  • UIViewController??????(视图控制器),他包含如下常见的需要重写的方法

    ??????

    • •  viewDidLoad??????:当该控制器管理的视图被加载完成后,系统会自动调用该方法
    • •  didReceiveMemoryWarning???????????????????????????????? ??????????????:当系统检测到可用内存紧张时,将会调用该方法
    • •  viewWillAppear??????:当控制器管理的视图将要显示出来时,系统会自动调用该方法
    • •  viewDidAppear??????:当该控制器管理的视图显示出来后,系统会自动调用该方法
    • •  viewWillDisappear:当该控制器管理的视图将要被隐藏或被将要移出窗口时,系统会自动调用该方法
    • •  viewDidDisappear??????:当该控制器管理的视图被隐藏或被移出窗口时,系统会自动调用该方法 ????????????????????????

      视图

      视图试纸继承UIView类的控件,表示屏幕上一块矩形区域,在MVC模式中承担View的职责

      一个ViewController??必须有一个根视图

      视图的作用是用来显示所在区域的内容,并响应触摸事件??????????(UIControl??????子类

      • •所有的视图都可以包含子视图
      • •   常用操作
      • •  addSubview ??????????????添加一个子视图
      • •  removeFromSuperview ????????从父视图中删除自己
      • •  viewWithTag从自己和子视图中根据 ??????????????????tag????????查找视图
      • •  subViews ????????????????所有子视图的数组
      • •  hidden 控制是否隐藏
      • •  backgroundColor ????背景颜色

        第一种:使用Xib创建根试图?? 

        1,????????默认关联:????创建ViewController??????时勾选also create xib file

        • 2,????????手动关联,????????????如果分开创建ViewController和??xib

        • –  2.1 ????打开xib????文件,????????打开左侧dock????区域,????选择file’s owner
        • –  2.2 右侧面板选择第三个???????????????? Identify inspector
        • –  2.3 ??在CustomClass??????????????中填写要关联的ViewController????类名,????回车
        • –  2.4 右键点击??????file’s owner,??将outlets中的 ????view右侧的小圆点拖动到根????view
        • –  补充??:可以在??????ViewController????????????中定义多个副view,??在xib??????????中定义多个副视图 ??????,??????????????就爱你跟他们进行关联,????配合addSubview和

          ??removeFromSuperview?????????????????? 进行界面简单的切换

          第二种:手写代码创建根视图

          ????重写ViewController??的loadView????方法,??self.view赋值一个视图对象

          ??????????

          -(void)loadView {

          //??????????????????????????????????手写代码创建一个全屏视图作为跟试图,重写此方法会导致关联????????????????????xib????失效

          UIView *rootView = [[UIView alloc]initWithFrame:[[UIScreen mainScreen]bounds]];

          rootView.backgroundColor = [UIColor redColor];

          self.view = rootView; }

          ??在viewDidLoad??????????????中手写代码创建控件??,添加到??????self.view??中

          [UIScreen mainScreen]bounds]获取全屏的坐标和大小

          在根视图中添加子视图

          1,??????当使用xib????????????创建根试图时,??????????同事可以在xib中画子视图??????????

          2,????????也可以在viewDidLoad???????????????????????? 方法中编写代码创建子视图

          CGRect:??包含x,y,width,height????????四个变量

          x,y????????????????????????????定位视图详单雨左上角的坐标位置

          width,height??????????确定视图的宽度和高度???????? CGRectMake ????创建CGRect??????变量的函数??

          initWithFrame??????????根据指定位置和大小创建视图

          ?????????????? self.view addSubView 添加子视图??????????

          窗口,视图,视图控制器的关系

          • 在??AppDelegate??????window????中创建window对象,??????????指定根视图控制器
          • •  ????视图控制器通过关联????????????xib??????????来构建界面,???????????????? ????????????也可以通过手写代码来创建界面,??????????完成界面布局(View????部分)
          • •  ????视图控制器通过时间机制响应用户交互,并通过跳转功能完成呢个界面切换??????????????????????????(Controller)
          • •  ????编写Model??????????类实现数据封装

时间: 2024-11-05 17:28:03

代码创建UI界面的相关文章

我的IOS学习之路(一):使用代码创建UI界面

此实例为使用代码动态的删除和添加标签(Label) 主要列举视图控制器文件,详见代码 1 #import "FCViewController.h" 2 3 @interface FCViewController () 4 @property (strong, nonatomic) NSMutableArray *Labels; 5 @end 6 7 @implementation FCViewController 8 int nextY = 40; 9 - (void)viewDidL

关于 JavaFX ——我对通过代码写 UI界面的层级式分类方法

前言:在我的另一篇文章“我对 Java 标志符的命名方法”中有提到:对于返回控件的方法我是使用类似:W_borderPane() 的方式编写的. 现在我提出一种通过代码编写 UI 界面的层级式分类方法: 示例代码: // 根容器 private static BorderPane W_borderPaneBasis(){ // 创建 BorderPane _borderPaneBasis = new BorderPane(); // #自我定义 _borderPaneBasis.setBackg

Android有感(9):10.使用XML文件和Java代码控制UI界面

Android推荐使用XML文件设置UI界面,然后用Java代码控制逻辑部分,这体现了MVC思想. MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑. 我们可以在app\src\main\res\layout目录下定义一个XML文件(R.java文件会自

Android研究之动态创建UI界面详解

 Android的基本UI界面一般都是在xml文件中定义好,然后通过activity的setContentView来显示在界面上,这是Android UI的最简单的构建方式.其实,为了实现更加复杂和更加灵活的UI界面,往往需要动态生成UI界面,甚至根据用户的点击或者配置,动态地改变UI,本文即介绍该技巧.对事件和进程的可能安卓设备实现触摸事件的监听,跨进程 假设Android工程的一个xml文件名为activity_main.xml,定义如下: 1 2 3 4 5 6 7 8 9 10 11

iOS 用代码搭建UI界面实例

1.背景 学习IOS开发也差不多两个月了,赶鸭子上架的学习模式让我学习比较快,但是真心很累,每天有每天的工作进度,在学习的 时候需要边做一个项目真心有点累,但是看到自己的收获还是值得的.自己原来是做C#开发的,由于公司需求想开展手机业务, 想公司内部的人做,我觉得是机遇,我就选择了iOS. 学习了这么就吐槽下ios的学习环境,很多时候你问别人问题得不会回你,特别是QQ群,所以想写一些比较清楚的教程帮助那些像 我一样摸索前进的新学者更快的进入.我比较常去的一些论坛都是很牛逼的.cocoa Chin

用代码控制UI界面

       1 public class MainActivity extends Activity { 2 //当第一次创建Activity时回调该方法 3 @Override 4 protected void onCreate(Bundle savedInstanceState) { 5 super.onCreate(savedInstanceState); 6 //创建一个线性布局管理器 7 LinearLayout layout = new LinearLayout(this); 8

swift3.0  代码创建经典界面的九宫图--优化篇

在上一篇只是简单实现了九宫图效果,本章需要形成APP界面九宫图效果 override func viewDidLoad() { super.viewDidLoad() createnine() } //九宫图算法 func createnine(){ //高 let kAppViewH:CGFloat=80 //宽 let kAppViewW:CGFloat=80 //行个数 let kColCount:Int=3 //间隔 let kStart:Int=20 let MarginX:CGFlo

(五)使用代码创建UI

1 package com.example.codeUI; 2 3 import android.app.Activity; 4 import android.os.Bundle; 5 import android.view.Gravity; 6 import android.widget.LinearLayout; 7 import android.widget.TextView; 8 9 public class MainActivity extends Activity { 10 11 @

iOS UICollectionView的使用(用代码创建UI)

在控制器中添加CollectionView 在控制器的viewDidLoad方法中初始化CollectionView static NSString *ID = @"collectionViewCell"; - (void)viewDidLoad { [super viewDidLoad]; //    UICollectionView *collectionView = [[UICollectionView alloc]initWithFrame:self.view.bounds];