zoukankan      html  css  js  c++  java
  • 界面实现的小总结

    1.iOS应用程序开发步骤
    ================================================================================
    1]] >   开发方式
    (1) Storyboard  在Xcode 4.x对源代码管理器支持非常差!git & svn
    (2) Xib         在Xcode 4.x对源代码管理器支持非常差!git & svn
    (3) 纯代码
    (4) 纯代码+Xib混合(最多)

    原因

    1.  Sotryboard开发相对简单
    2.  把控件直接通过拖拽的方式,放置在界面上,只管的看到每一个控件的属性,以及属性的层次结构
        对初学者而言,非常有帮助,可以快速熟悉各个控件!

    Storyboard  : 全局的布局,可以所有视图控制器之间的关系,相对重量级
    Xib         : 局部的,可以指定一个视图控制器,或者某一个自定义视图,相对轻量级

    纯代码 & 图形界面开发差别

    1.  需要自己写代码创建所有的控件,并且摆放这些控件的位置
    2.  当我们对控件属性熟悉之后,用纯代码开发,速度并不会比图形界面慢

    图形界面的好处,接触陌生的控件时,通过图形界面可以快速掌握该控件的属性,并且测试该控件各个属性的效果!

    为什么纯代码+Xib混合(最多)

    * Xib自定义视图,定义某一个局部小块的视图,相对开发速度比较快
    * 而且对子视图调整的速度会比较快!
    * 而且不像Stroryboard容易破坏已经布局好的界面!

    平时练习的时候,一定要多用纯代码创建界面!在创建界面的过程中,脑海中,要有界面的整体结构图!

    2]] >   实际开发步骤

    (1) 版本规划
    产品目标:公司的老总!
    产品设计:产品经理来负责!做版本规划,100个功能,分成10个版本
    有了总体版本规划,功能规划后,程序员在设计时,会预留接口
    产品开发:程序员
    平面设计:美工(平面设计师)


    (2) 搭建界面
    (A) Storyboard & Xib
    A.1    搭建界面,拖拽控件,设置视图控制器之间的跳转关系
    A.2    连线
            IBOutlet    需要全局访问的控件
            IBAction    控件的监听方法,本质上是void,IBACtion可以保证能够拖线
    (B)纯代码
    B.1    在loadView方法中建立视图层次结构
    B.2    addTarget添加控件监听方法,与Storyboard中连接IBAction等价的
    B.3    定义属性便于全局访问

    (3) 代码实现
    (4) 测试(一定要真机测试!不要把审核人员当成我们的测试人员,不要把用户当成我们的测试人员!)
    (5) 上架


    3]] >   MVC

    M:  Model               数据模型
    V:  View                视图
    C:  Controller          视图控制器,绝大多数的代码都集中在Controller中

    2.UIKit控件概览
    ================================================================================
    1]] > 交互控件
    *(1)UIButton            按钮
        Button有4种状态
        Button能显示8张图片&4个标题

        Button有7种类型

    UIButtonTypeCustom = 0          // 自定义
    UIButtonTypeSystem              // iOS7之后添加的

    UIButtonTypeDetailDisclosure,   // 显示i
    UIButtonTypeInfoLight,          //
    UIButtonTypeInfoDark,           // 以上三个在iOS7中是一样的

    UIButtonTypeContactAdd,         // 加号
    UIButtonTypeRoundedRect         // iOS6用的,在iOS7中与UIButtonTypeSystem等价

    以下两句代码,都是创建自定义类型的button
    * UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    * UIButton *btn1 = [[UIButton alloc] init];

    (2)UISlider            滑块
    (3)UISegmentedControl选项卡
    (4)UISwitch            开关

    *2]] > 内容显示控件
    *(1)UILabel             标签视图
    *(2)UIImageView         图像视图
    *(3)UIScrollView滚动视图
    ***(4)UITableView         表格视图
    *(5)UICollectionView集合视图,九宫格
    *(6)UIWebView           Web页面视图

    3]] > 文字输入控件
    用户登录:除非你是QQ,微博,微信,网上银行!
    *(1)UITextField         文本框,只能输入一行文字
    *(2)UITextView          文本视图,可以显示/输入多行文本

    4]] > 提示信息控件
    *(1)UIAlertView         消息提示/警告视图
    *(2)UIActionSheet操作选项表(暗示的按钮!)

    5]] > 数据选择控件
    (1)UIPickerView数据选择视图
    (2)UIDatePicker日期选择控件

    上述控件学习过程中,不要一个一个去探索!

    学习套路:
    1]] >   不熟悉控件,先拖到Storyboard修改属性,尝试一下
    2]] >   看头文件,属性,代理!
    3]] >   写一些"测试"程序!
    4]] >   搞定之后,再移植到现有程序中!

    3.  事件监听方法
    ================================================================================
    1]] >   代理模式

    代理模式目标:代理方不需要知道委托方具体的实现细节!只需要知道发生事件时,能够得到什么结果!

    *   委托方
    (1) 定义协议方法                  委托方能够发生什么事情,传递什么数据
        第一参数是自己?传递的数据
    (2) 定义代理属性
        发生事情时,谁来执行具体工作
    (3) 在需要的时候,通知代理工作
        直接调用方法

    *   代理方
    (1) 遵守协议
    (2) 实现方法
    (3) 设置代理,告诉委托方,有事找我

    2]] >   通知中心        应用程序(私人通讯录)

    特点:
    * 多对多
    * 以监听"字符串"的形式,来调用对应的方法

    (1) 发生事件的控件,在事件发生时,POST指定的字符串
    (2) 监听字符串对象的"观察者",在监听到字符串时,执行具体方法

    效率不高,如果代理不复杂,尽量少用!
    关于销毁,如果监听者被销毁 -> nil,通知中心的注册通知没有销毁!程序不会蹦

    - (void)viewDidAppear:(BOOL)animated
    {
        // 注册通知
    }

    - (void)viewWillDisappear:(BOOL)animated
    {
       
        // 注销通知
    }

    3]] >   KVO         应用程序(网易侧栏)
    主要应用场景:监听"模型属性"数据的变化
    从网络获取数据,某些重要信息发生变化的监听,例如:QQ中监听到接收到未读消息的数字。

    4.  多"视图控制器"->界面
    ================================================================================
    使用多控制器的原因?
    *  多个界面之间的跳转

    1]] >   UINavigationController
    导航控制器特点
    (1) 根视图控制器(第一个入栈,栈底)
    (2) 以栈的形式管理其中的所有控制器,先进后出
    (3) 显示在用户眼前的是栈顶
    (4) 栈顶控制器出栈后,会被销毁

    UINavigationController管理了一个视图控制器的栈,以及一个导航条

    入栈:PUSH
    出栈:POP

    2]] >   UITabBarController
    (1) 并列管理多个视图控制器
    (2) 视图控制器一旦创建,不会被销毁
    (3) 彼此之间是并列关系

    "经典"的应用程序结构

    QQ

    1 TabBarController + 多个NavigationController
    提示:
    如果以Nav为根,则后续所有视图控制器共享一个NavigationController,无法修改和定制

    3]] >   自定义多视图控制器      应用(双表格联动,网易侧栏)

    5.  事件处理
    ================================================================================
    1]] >   4种触摸事件
    2]] >   6种手势识别
    3]] >   响应者链条 & hitTest方法的事件传递
    4]] >   不能接受用户交互的几种情况

  • 相关阅读:
    OSG-提示“error reading file e:1.jpg file not handled”
    OSG-加载地球文件报0x00000005错误,提示error reading file simple.earth file not handled
    QT-找开工程后,最上方提示the code model could not parse an included file, which might lead to incorrect code completion and highlighting, for example.
    我的书《Unity3D动作游戏开发实战》出版了
    java中无符号类型的第三方库jOOU
    Windows批处理备份mysql数据
    使用 DevTools 时,通用Mapper经常会出现 class x.x.A cannot be cast to x.x.A
    Java版本,Java版本MongoDB驱动,驱动与MongoDB数据库,Spring之间的兼容性
    Jrebel本地激活方法
    wget下载指定网站目录下的所有内容
  • 原文地址:https://www.cnblogs.com/Ruby-Hua/p/5152703.html
Copyright © 2011-2022 走看看