iOS开发UI篇 - 基本属性

1. IBAction的参数

- (IBAction)left:(UIButton *)button

(1) 在OC中,绝大多数的控件监听方法的第一个参数就是控件本身

(2) 默认连线时的参数类型是id

(3) 如果要在监听方法中,方便控件的使用,可以在连线时或者连线后,修改监听方法的参数类型

 

2. 修改对象的结构体成员

在OC中,不允许直接修改“对象”的“结构体属性”的“成员”,但是允许修改“对象”的“结构体属性”

修改结构体属性的成员方法如下:

(1)使用临时变量记录对象的结构体属性

(2) 修改临时变量的属性

(3)将临时变量重新设置给对象的结构体属性

 

3. 在程序开发中需要避免出现魔法数字(Magic Number)

使用枚举类型,可以避免在程序中出现魔法数字

(1)枚举类型实质上就是一个整数,其作用就是用来替代魔法数字

(2)枚举类型中,指定了第一个整数之后,后面的数字会递增

 

4. frame & bounds & center

1> frame可以修改对象的位置和尺寸

2> bounds可以修改对象的尺寸

3> center可以修改对象的位置

 

5. 首尾式动画

    [UIView animateWithDuration:0.4 animations:^{
        <span style="font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px;">self.headImageView.bounds = rect;</span>
    } completion:^(BOOL finished) {
        
    }];


6. transform属性

在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

常用的创建transform结构体方法分两大类

(1) 创建“基于控件初始位置”的形变

CGAffineTransformMakeTranslation(平移)

CGAffineTransformMakeScale(缩放)

CGAffineTransformMakeRotation(旋转)

 

(2) 创建“基于transform参数”的形变

CGAffineTransformTranslate

CGAffineTransformScale

CGAffineTransformRotate

 

补充:

在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI

正数表示顺时针旋转

负数表示逆时针旋转

 

提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移。因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性,而不是frame、bounds、center 。

[代码示例]

//位移(不累加)
self.headImageView.transform=CGAffineTransformMakeTranslation(50, 200);
//缩放
self.headImageView.transform=CGAffineTransformMakeScale(1.2, 10);
//在原有的基础上位移(是累加的)
self.headImageView.transform=CGAffineTransformTranslate(self.headImageView.transform, 50, 50);
//在原有的基础上进行缩放
self.headImageView.transform=CGAffineTransformScale(self.headImageView.transform, 1.5, 1.6);
   
//在原有的基础上进行旋转
//旋转角度为1/pi,逆时针
     self.headImageView.transform=CGAffineTransformRotate(self.headImageView.transform, -M_1_PI);
//旋转的角度为pi/2,顺时针
    self.headImageView.transform=CGAffineTransformRotate(self.headImageView.transform, M_PI_2);

7、从需要——>实现:功能分析、步骤分析、界面实现分析

实现——>优化:(开发思路)

1、完成基本功能。

2、考虑性能:

(1)代码重构

(2)懒加载:即延迟加载,需要的时候才加载,写的其实就是get方法。优点:占用内存小、代码可读性高、松耦合。 缺点:效率低


8、字典转模型

1)字典转模型介绍

示意图:

 

2)字典转模型的好处:

(1)降低代码的耦合度

(2)所有字典转模型部分的代码统一集中在一处处理,降低代码出错的几率

(3)在程序中直接使用模型的属性操作,提高编码效率 

(4)调用方不用关心模型内部的任何处理细节

3)字典转模型的注意点:

模型应该提供一个可以传入字典参数的构造方法

- (instancetype)initWithDict:(NSDictionary *)dict;

+ (instancetype)xxxWithDict:(NSDictionary *)dict;

提示:在模型中合理地使用只读属性,可以进一步降低代码的耦合度。


4)

1.readonly属性

 (1)@property中readonly表示不允许修改对象的指针地址,但是可以修改对象的属性。

 (2)通常使用@property关键字定义属性时,会生成getter&setter方法,还会生成一个带下划线的成员变量。

 (3)如果是readonly属性,只会生成getter方法,不会生成带下划线的成员变量.

2.instancetype类型

(1)instancetype会让编译器检查实例化对象的准确类型 
(2)instancetype只能用于返回类型,不能当做参数使用

3.instancetype & id的比较

(1) instancetype在类型表示上,跟id一样,可以表示任何对象类型

(2) instancetype只能用在返回值类型上,不能像id一样用在参数类型上

(3) instancetype比id多一个好处:编译器会检测instancetype的真实类型


9、MVC机制简单说明

 

说明:

(1)在开发过程中,作为控制器处理的量级应该很轻,不该操心的不操心。协调好模型和视图就ok了,要学会当一个好老板。

(2)三个部分各司其职,数据模型只负责数据的处理,视图部分只负责把拿到的数据进行显示,两个部分都是被动的,等待着大管家控制器的调遣。

(3)在OC中,如果视图和数据模型之间有通道,那控制器是否处于失控状态呢?

(4)View->Controller: 通过一种盲的结构化通讯方式(目标-动作模式、delegate/datasource)

Controller- >View: outlet

Controller - >model:直接调用方法

model - > controller : notification&KVO


10、KVC的简单介绍

KVC key valued coding 键值编码

KVC通过键值间接编码

KVC按照键值路径取值时,如果对象不包含指定的键值,会自动进入对象内部,查找对象属性

  补充:

与KVC相对的时KVO,即key valued observer 键值观察。监听某一个模型的属性,只要模型属性的值一变化就通知你



转 :http://www.cnblogs.com/wendingding/tag/UI基础/default.html?page=1


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值