zoukankan      html  css  js  c++  java
  • IOS基础控件总结

    UIKIT基础控件小结

    iOS开发概述

    1.         cocos体系结构,一共有四层框架,要调用不同的功能,需要使用不同的框架。前期主要学习cocos touch层的UIKit框架

    2.         iOSandroid的对比

    ü         iOS是基于UINX,用C语言开发的,直接与系统底层交互,性能高

    ü         andorid是基于Linux,用Java语言开发,基于虚拟机运行,性能差

    UI基础控件

    1.    UILabel——标签

    作用:显示文字

    属性:

    text属性:是label的文字

             alignment属性:对齐方式

    lines属性:如果为0,不限制行数,但是Label需要有足够大的空间显示内容

    Action

    2.     UIImageView——图像视图

    作用:在一个区域内,显示图像。

    注意:UIImage是一个二进制的图像数据,而UIImageView是用来显示图像数据的区域

    属性:

    image属性:用于设置在图像视图中显示的图片

             要从bundle加载图像,可以使用[UIImage imageNamed:]方法。

    UIImageView本身可以做序列帧动画,要使用序列帧动画,我们需要指定三个属性:

    1)      animationsImages:序列帧图像数组

    2)      animationDuration:一组序列帧图片播放完成需要的时间

    3)      animationRepeatCount:序列帧动画重复的次数,默认为0,循环播放

    设置完UIImageView的动画属性之后,需要使用startAnimation方法启动动画,如果要停止动画,可以使用stopAnimation方法。

    另外,可以使用isAnimating属性,判断当前是否正在播放动画

    Action

    3.     UIButton——按钮

    作用:用户交互的主要控件,有六种类型,其中自定义类型使用最为普遍

    属性:

    title属性:是按钮的文字

    titleColor属性:是按钮的颜色

    image属性:是按钮显示的图像

    提示:如果同时指定了imagetitle属性,当按钮空间不够时,image优先显示;另外,image属性在按钮中不会变形

    backgroundImage属性:是按钮的背景图片,注意,按钮的背景图片会根据按钮的实际大小拉伸,在使用背景图片时,尤其需要注意按钮的大小

    backgroundColor属性:按钮的背景颜色属性,仅在自定义类型的按钮有效

     

    使用技巧:通常在指定同一类型的按钮操作时,我们习惯用tag区分按钮,然后统一调用同一个方法

    注意:设置按钮属性的同时,需要指定属性应用的状态,通常使用Normal状态,Highlight是按钮长按下的状态

    ActionTouchUpInside

    4.     UITextField——文本框控件

    作用:供用户输入或编辑文本

    属性:

    text属性:获得或设置文本框中的文字

    使用文本框控件时需要注意几项事情:

    1)       在输入不同类型的文本时,需要注意键盘的类型,譬如输入QQ号要使用数字键盘。输入身份证号,需要自定义数字键盘或者默认打开数字的全键盘

    2)       使用自定义数字键盘时,如果在越狱的机器上,可能会出现格式显示问题

    3)       如果界面上有多个文本框供用户输入时,要注意回车键的设置,实现文本框由上至下的切换,切换到最后一个文本框,再按回车键时,调用对应的确认按钮的方法

    4)        需要注意关闭键盘,关闭键盘有两种方法:

    a)      [self.viewendEditing:YES];

    b)        [textField resignFirstResponder];

    撤销自身第一响应者的身份

    要获取键盘输入的焦点,可以设置textFieldbecomeFirstResponder属性,让文本框成为第一响应者即可。

    5)        要监听文本框的回车事件,需要设置文本框的delegate,同时让视图控制器遵从<UITextFieldDelegate>协议

    以上四个控件主要应用在应用程序中。

    5.     UISwitch——开关控件

    作用:设置某一个属性开或者关的状态

    属性:

    state属性:on/off

    使用isOn可以判断开关当前是否打开

    Action valueChanged

    6.     UISlider——滑块控件

    作用:允许用户使用手指拖动滑块,产生数值变化的控件

    属性:

    minimumValue:滑块的最小数值

    maximumValue:滑块的最大数值

    value:滑块的当前数值

     

    需要注意的时:滑块没有步长,滑块数值通常是连续变化的,这样可以保证滑块动画的连续性,因此,我们在使用滑块时,需要格外留意是否有重复刷新的情况,例如照片查看器示例程序

    Action valueChanged

    7.     UIStepper——计数器控件

    作用:用户点击“+”数值增加,点击“-”数值减少

    属性:

    minimumValue:滑块的最小数值

    maximumValue:滑块的最大数值

    value:滑块的当前数值

    stepValue:滑块数值变化的步长

    wraps:是否环绕,设置了环绕属性之后,当数值到达最大值时会回复到最小值,产生环绕效果。如果没有设置环绕属性,当到达最大值时,“+”会变灰禁止用户点击,当到达最小值时,“-”会变灰禁止用户点击

    Action valueChanged

    8.     UISegmentControl——选项卡控件

    作用:用户同一时间只能选择一个选项,与开关不同,它可以设置多个选项供用户选择

    属性:

    selectedSegmentIndex属性:用户当前选中的选项卡索引,第一个选项卡索引对应的数值是0

    Action valueChanged

    以上四个控件主要应用在设置页面。

    9.    UIView

    作用:

    1)        是一个容器,可以容纳任何的控件或者视图

    2)       所有的控件,最终均继承自UIView

    属性:

    1)     继承类属性:

    superView:每一个UIView最多只能有一个父视图,注意:UIViewController的根视图没有父视图。

    subViews:当前视图所包含的子视图/控件

    2)     位置大小类属性

    frame:设置视图的边框

    bounds:设置视图的边界,用于指定视图的大小,常用于视图的子控件设置位置,因为bounds属性的原点,永远是(0,0)

    center:设置视图的中心点位置,通常用于指定视图的位置,在视图动画中比较常用

    注意:

    framecenter可以指定UIView的位置

    framebounds可以指定UIView的大小

    3)     形变属性

    transform:可以指定视图的平移、旋转和缩放属性

     

    ü        CGAffineTransformRotateCGAffineTransformScaleCGAffineTransformTranslation三个函数用于基于UIView当前的形变属性继续变形

    ü        CGAffineTransformMakeRotateCGAffineTransformMakeScaleCGAffineTransformMakeTranslation三个函数用于基于UIView初始的形变进行变形

    动画:

    UIView封装了三个块代码动画:

    ü        [UIView animateWithDuration:animations:]

    ü         [UIView animateWithDuration:animations:completion:]

    ü         [UIView animateWithDuration: delay: options: animations: completion:]

      Foundation框架

    凡是带有Mutable字样的类型,都是可变的,如果存在相对应的没有Mutable字样的类型,都是不可变的,一旦初始化之后,就不可以再修改。

    1.    NSStringNSMutableString

    1.1     字符串转数字 integerValue

    1.2     字符串常用方法:[NSString stringWithFormat:@”格式字符串”, 参数…]

    1.3     如果要表示:0001之类的数字格式可以使用”%04d”之类的格式字符串

    2.    NSNumber

    2.1     是数字的NS对象的表达形式,如果要把数字添加到数组或者字典中,必须要进行转换,同时要使用数组中的数字,还需要转换成对应的数字。

    2.2     要转换数字可以使用OC提供的包装方法:@(int)

    2.3     要把NSNumber转换成字符串,需要使用stringValue方法

    3.    NSDate

    3.1     是日期的数据类型

    3.2     常用类方法[NSDate date]取出当前的系统时间

    3.3     timeIntervalSinceDate方法可以计算两个时间的差值,以秒为单位

    3.4     特别需要注意,不要把NSDateNSData搞混,这对于初学者,是经常犯的错误。

    4.    NSArrayNSMutableArray

    4.1     NSArray是不可变的,NSMutableArray是可变的,通常在使用时,可以用一个自定义方法,初始化一个NSMutableArray,而在方法之外,统一使用NSArray

    4.2     NSArray中,可以插入任何类型的对象,使用方法是:addObject(id)

    4.3     要取出NSArray中的对象,可以使用整数下标获取,例如:array[i]

    4.4     需要注意的是:如果要将intfloatdoubleNSIntegerCGFloatCGPointCGRectCGSize这些类型的数据插入数组之前,都需要进行类型转换

    4.5     如果从Bundle中读取数组,可以使用arrayWithContentOfFile:方法

    5.    NSDictionaryNSMutableDictionary

    5.1     字典和NSArray非常类似,不过字典是使用字符串键值进行维护的,它的可读性更强

    5.2     在数据字典中,字符串的键值不能够重复

    5.3     要向数据字典中添加对象,需要使用setValue:forKey:方法

    5.4     要从数据字典中获取对象,需要使用dict[@”keyName”];

    5.5     如果要从Bundle中读取字典,可以使用dictionaryWithContentsOfFile:方法

      MVC体系结构

    Model:数据模型

    负责数据的保存以及相关的处理方法,Model不知道它会被谁调用,也不知道什么时候会被调用

    View:视图

    负责界面上元素的显示,通常在很多iOS应用程序中,视图只是StoryBoard或者xib文件,一般不会在视图中写太多的代码

    Controller:控制器

    负责界面上数据的显示,以及用户与界面发生交互之后,通知数据模型,做相应的处理。控制器是视图与数据模型之间的纽带和桥梁。通常在大多数应用程序中,视图控制器中的代码是最多的。

    iOS开发中,每一个Controller都有切仅有一个跟视图,如果使用Storyboard建立的应用程序,Xcode会自动设置一个view作为视图控制器的跟视图,也是第一个显示在用户面前的视图。

      代理协议消息传递机制

    代理协议机制在iOS开发中,是非常常用的一种消息传递机制,主要用于子视图向父视图传递数据,代理协议是单向消息传递。

    要使用代理协议,需要以下几个步骤:

    1.      子视图控制器中需要做如下操作:

    1)       在子视图控制器中定义协议,并且定义若干协议方法,注意:只有方法,而没有方法的具体实现。协议的名称通常是子视图控制器的类名+Delegate

    2)       在子视图控制器中定义代理属性,代理的属性是weak

    3)       子视图控制器中,在需要时直接通过_delegate调用协议方法,就可以执行父视图控制器中的相应方法的实现

    2.      父视图控制器中需要做如下操作:

    1)       遵从子视图控制器头文件中定义的协议

    2)       在推出子视图控制器前,设置自己是子视图控制器的代理,通常在prepareSegue方法中实现

    3)       实现子视图控制器中的协议方法,等待子视图控制器的调用

      NSTimer计时器

    使用实例代码如下:

    // 第一个参数:多长时间会触发一次,以秒为单位

    // 第二个参数:如果看到函数的参数有target,一般情况下,都用self

    // 第三个参数:SEL,需要调用其他的方法,就是每次时钟被触发的时候,去执行的方法

    // 最多可以带一个参数,就是时钟本身

    // 第四个参数,暂时不用考虑,设置成nil

    // 第五个参数:是否重复,通常会设置YES

    _gameTimer = [NSTimerscheduledTimerWithTimeInterval:1.0ftarget:selfselector:@selector(updateTimer:) userInfo:nilrepeats:YES];

     

    在时钟触发方法中,可以使用sender.fireDate获取到时钟被触发的时间

     

    注意:使用NSTimer的时候,千万不要忘记调用invalidate方法关闭时钟。

     

    NSTimer可能不会是及时相应触发时间的,它的执行优先级相对较低,因此,不要使用NSTimer去做实时响应需求较高的周期性操作。

      声音和音效的播放

    声音

    1.        需要导入AVFoundation框架

    2.        需要从Bundle中加载文件,播放之前需要使用preparePlay方法,准备播放

    3.        可以设置声音的循环次数、音量大小

    4.        播放效率相对略低,但是可以播放较大的声音文件

    音效

    1.        导入AudioToolBox框架

    2.        使用C语言的函数直接将音频加载到内存,通过SystemSoundID进行播放

    3.        在播放的时候,不容易中断,也控制不了音量

    4.        播放效率高,通常使用不超过2秒的音频文件

    5.        为了避免同一个音效文件在不同视图控制器中被重复加载,造成无谓的内存消耗,在使用音效时,通常会用一个数据字典进行维护

     

  • 相关阅读:
    我是这样在Google paly上赚美刀的
    休闲英语:超经典实用的英文短信缩写
    休闲英语:揭秘7招最有效的拍马屁技巧
    laravel5数据库配置及其注意事项
    帮助函数
    Laravel报错Call to undefined function Illuminate\Encryption\openssl_cipher_iv_length()
    NetBeans 时事通讯(刊号 # 67 Aug 04, 2009)
    JavaEE 6 将包括 JSR330 和 JSR299
    苯事两则
    NetBeans 时事通讯(刊号 # 66 Jul 30, 2009)
  • 原文地址:https://www.cnblogs.com/Rmeo/p/3826928.html
Copyright © 2011-2022 走看看