IOS基础 总结

来源:互联网 发布:纪念册制作软件app 编辑:程序博客网 时间:2024/05/01 23:27
(一)在.m文件中声明的方法都是私有方法,外界是无法访问的,这就保证了程序的封装性

(二)
UIView常见属性
@property(nonatomic,readonly) UIView *superview;
获得自己的父控件对象

@property(nonatomic,readonly,copy) NSArray *subviews;
获得自己的所有子控件对象

@property(nonatomic) NSInteger tag;
控件的ID\标识,父控件可以通过tag来找到对应的子控件

@property(nonatomic) CGAffineTransform transform;
控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
@property(nonatomic) CGRect frame;
控件所在矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)

@property(nonatomic) CGRect bounds;
控件所在矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x\y一般为0)

@property(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)


(三)
UIView常见方法
- (void)addSubview:(UIView *)view;
添加一个子控件view


- (void)removeFromSuperview;
从父控件中移除

- (UIView *)viewWithTag:(NSInteger)tag;
根据一个tag标识找出对应的控件(一般都是子控件)

(四)
Images.xcassets文件中不能识别JPG格式的图片文件


(五)
如果发现通过代码无法修改控件的位置或者尺寸时,应该去掉storyboard里面的autolayout功能,这是自iOS6开始出现的特性
autolayout是用来自动布局的,用来束缚控件的位置和尺寸。去掉这个功能,控件的位置和尺寸就不再有一些固定的束缚


(六)
对于控件的大小位置旋转等属性的改变需要注意,这些都是由结构体属性控制的
OC语法规定:不允许直接修改对象的结构体属性的成员,所以要修改这些属性值
必须首先获取控件的结构体,修改之后再赋值。

(七)
通过以下属性可以修改控件的位置
(1)
frame.origin
(2)
center
通过以下属性可以修改控件的尺寸
(1)
frame.size

(2)bounds.size


(八)
利用transform属性可以修改控件的位移(位置)、缩放、旋转

创建一个transform属性

(1)CGAffineTransform CGAffineTransformMakeTranslation(CGFloat tx,  CGFloat ty) ;

(2)CGAffineTransform CGAffineTransformMakeScale(CGFloat sx, CGFloat sy);

(3)CGAffineTransform CGAffineTransformMakeRotation(CGFloat angle)
(angle是弧度制,并不是角度制)
在某个transform的基础上进行叠加

(1)CGAffineTransform CGAffineTransformTranslate(CGAffineTransform t, CGFloat tx, CGFloat ty);
(2)CGAffineTransform CGAffineTransformScale(CGAffineTransform t, CGFloat sx, CGFloat sy);
(3)CGAffineTransform CGAffineTransformRotate(CGAffineTransform t, CGFloat angle);


(九)
清空之前设置的transform属性
view.transform = CGAffineTransformIdentity;


(十)
storyboard的本质就是根据图形界面描述转成相应的代码

(十一)
动画的实现两种方式:
第一种:
头尾式

[UIView beginAnimations:nil context:nil];


/** 需要执行动画的代码 **/

[UIView commitAnimations];

第二种:第二个参数是敲回车键之后添加的执行代码
Block式
[UIView animateWithDuration:0.5 animations:^{
    
/** 需要执行动画的代码 **/
} ];




(十二)
一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片
(文件名可以省略扩展名)


UIImage *image = [UIImage imageNamed:@"btn_01"];
如果是JPG格式的图片不能省略文件名的扩展名




(十三)
常用快捷键
(1)option + command + 回车键 :打开辅助视图
(2)command + 回车键:取消辅助视图
(3)cmd + 0 :打开或者取消左边的导航栏
(4) option + cmd 0 :打开或者取消右边的属性视图


(十四)
将属性放在get方法中初始化的方式,称为“懒加载”\”延迟加载”
get方法就是直接根据属性名获取其属性值的方法。这个方法会返回一个属性的值


(十五)获取文件的全路径(plist文件)
获得Plist文件的全路径


NSBundle *bundle = [NSBundle mainBundle];
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
加载plist文件
在创建plist文件时可以选择创建的是一个数组还是一个词典,创建的是一个数组就会的返回一个数组
NSString *images = [[NSString alloc] init ];
NSBundle *bundle = [NSBundle mainBundle];
        
NSString *path = [bundle pathForResource:@"imageData" ofType:@"plist"];
        _images = [NSArray arrayWithContentsOfFile:path];
images = [NSArray arrayWithContentsOfFile:path];


(十六)
UIImageView可以以帧格式进行播放,播放时使用的只一个images数组。
相关属性以及方法介绍:
属性
@property(nonatomic,copy) NSArray *animationImages; 
需要播放的序列帧图片数组(里面都是UIImage对象,会按顺序显示里面的图片)
@property(nonatomic) NSTimeInterval animationDuration;
帧动画的持续时间
@property(nonatomic) NSInteger animationRepeatCount; 
帧动画的执行次数(默认是无限循环)

方法:
(1)- (void)startAnimating;
开始执行帧动画

(2)- (void)stopAnimating;
停止执行帧动画

(3)- (BOOL)isAnimating;
是否正在执行帧动画


(十七)UIImage的加载方式以及区别
(1)有缓存(图片所占用的内存会一直停留在程序中)
+ (UIImage *)imageNamed:(NSString *)name;
name是图片的文件名

(2)无缓存(图片所占用的内存会在一些特定操作后被清除)
+ (UIImage *)imageWithContentsOfFile:(NSString *)path;
- (id)initWithContentsOfFile:(NSString *)path;
path是图片的全路径



(十八)
属性的调用使用“.”方法的调用使用[].。


(十九)代码的封装
将重复出现的代码抽取到某个方法中,在需要这份代码的地方调用方法即可
原则:
将相同的代码放到一个方法中
将不同的值当做方法参数传进来
0 0
原创粉丝点击