IOS学习笔记 -- 基础

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

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

1> 使用临时变量记录对象的结构体属性
2> 修改临时变量的属性
3> 将临时变量重新赋值给对象的结构体属性

2. 在程序开发中需要避免出现魔法数字(Magic Number)
使用枚举类型,可以避免在程序中出现魔法数字

1> 枚举类型实质上就是一个整数,其作用就是用来替代魔法数字
2> 枚举类型中,指定了第一个整数之后,后面的数字会递增

3、 frame & bounds & center

1> frame可以修改对象的位置和尺寸,在Use Autolayout下无法缩放
2>
bounds可以修改对象的尺寸
3> center可以修改对象的位置

4. 首尾式动画
// beginAnimations表示此后的代码要“参与到”动画中
[UIView beginAnimations:nil
context:nil];
// setAnimationDuration用来指定动画持续时间
[UIView
setAnimationDuration:2.0];

// 要参与动画的代码

......

// commitAnimations,将beginAnimation之后的所有动画提交并生成动画
[UIView
commitAnimations];

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

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

1> 创建“基于控件初始位置”的形变
CGAffineTransformMakeTranslation //
位移
CGAffineTransformMakeScale         //
缩放
CGAffineTransformMakeRotation    // 旋转

2> 创建“基于transform参数”的形变
CGAffineTransformTranslate      
  // 位移 
CGAffineTransformScale          
    // 缩放
CGAffineTransformRotate        
    // 旋转

补充:
在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI,正数表示顺时针旋转,负数表示逆时针旋转

6、使用代码创建控件
在OC开发中,Storyboard中的所有操作都可以通过代码实现。

使用代码创建控件的步骤如下:

1> 使用控件对应类创建对象
2>
设置对象属性:frame\color\text\image\backgroundImage……
3> [self.view
addSubview:btn];将控件添加到视图

设置控件监听方法的示例代码如下:
[btn addTarget:self action:@selector(click:)
forControlEvents:UIControlEventTouchUpInside];

提示:
1>
addTarget方法定义在UIControl类中,这意味着可以给所有继承自UIControl类的对象添加监听方法
2>
监听方法的第一个参数就是对象本身
3> 监听方法的第二个参数是监听控件的事件

7、viewDidLoad
viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作
在viewDidLoad方法中,一定不要忘记调用父类的方法实现!
[super
viewDidLoad];

8、懒加载创建控件
1> 定义控件属性,注意:属性必须是strong的。
2>
在属性的getter方法中实现懒加载,示例代码如下:
- (UIImageView *)icon
{
  if (!_icon)
{
    _icon = [[UIImageView alloc] init];

    ......
    [self.view addSubview:_icon];
  }
  return
_icon;
}

使用懒加载的好处:
1> 不必将创建对象的代码全部写在viewDidLoad方法中,代码的可读性更强
2>
每个控件的getter方法中分别负责各自的实例化处理,代码彼此之间的独立性强,松耦合

9、 使用Plist文件
使用Plist文件的目的:将数据与代码分离

加载方法:
NSString *path = [[NSBundle mainBundle] pathForResource:@"name"
ofType:@"plist"];
NSArray *array= [NSArray arrayWithContentsOfFile:path];

提示:通常在方法中出现File字眼,通常需要传递文件的全路径作为参数

10、Images.xcassets中的素材
1> 只支持png格式的图片
2> 图片只支持[UIImage
imageNamed]的方式实例化,但是不能从Bundle中加载
3>
在编译时,Images.xcassets中的所有文件会被打包为Assets.car的文件

11、 UIImageView的序列帧动画
========================================
// 1.
是否正在动画
[self.imageView isAnimating];
// 2.
设置图片的数组
[self.imageView setAnimationImages:arrayImage];
// 3.
设置动画时长,默认每秒播放30张图片
[self.imageView setAnimationDuration:arrayImage.count
* 0.005];
// 4.
设置动画重复次数,默认为0,无限循环
[self.imageView setAnimationRepeatCount:1];
// 5.
开始动画
[self.imageView startAnimating];
// 6.
动画播放完成后,清空动画数组
[self.imageView performSelector:@selector(setAnimationImages:)
withObject:nil afterDelay:self.imageView.animationDuration];

12、UIImage
imageNamed
在图片使用完成后,不会直接被释放掉,具体释放时间由系统决定,适用于图片小,常用的图像处理
如果要释放快速释放图片,可以使用[UIImage
imageWithContentsOfFile:path]实例化图像

13、文件管理 [NSFileManager defaultManager]

常用方法
1> 判断文件是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
2>
将文件从源路径复制到目标路径
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString
*)dstPath error:(NSError **)error;
3> 删除文件
-
(BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
4>
返回指定路径中的文件列表
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path
error:(NSError **)error ;

时间: 2024-08-08 01:16:02

IOS学习笔记 -- 基础的相关文章

IOS学习笔记 -- 基础MVC初学习

1. @property的参数说明ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制使用ARC机制,对象的申请和释放工作会在运行时,由编译器自动在代码中添加retain和release1> strong:强指针引用的对象,在生命周期内不会被系统释放 在OC中,对象默认都是强指针2> weak:弱指针引用的对象,系统会立即释放 弱指针可以指向其他已经被强指针引用的对象 @property参数使用小结:1> 控件用weak2> 属性对象用strong3> 非对象类型用

IOS学习笔记 -- 基础-疯狂猜图实现流程

1. 搭建界面1> 上半部分,固定的,可以用Storyboard实现2> 下半部分,根据题目变化,可以考虑用代码实现 2. 图片的放大缩小1> 放大过程(1) 增加蒙版(遮罩),蒙版默认alpha = 0(2) 将图片移动到视图的顶层 [self.view bringSubviewToFront:图片的view];(3) 计算图片的目标位置,将蒙版的alpha改为0.5,动画显示 2> 缩小过程(1) 恢复图片位置,动画显示(2) 隐藏蒙版,将蒙版的默认alpha改为0 提示:如果

iOS开发学习笔记:基础篇

iOS开发需要一台Mac电脑.Xcode以及iOS SDK.因为苹果设备都具有自己封闭的环境,所以iOS程序的开发必须在Mac设备上完成(当然,黑苹果应该也是可以的,但就需要花很多的精力去折腾基础环境),Xcode是一个集成开发环境,包括了编辑器.调试.模拟器等等一系列方便开发和部署的工具,iOS SDK则是开发应用所必需,不同的SDK分别对应不同的iOS版本或设备,通常我们需要下载多个iOS SDK以确保我们开发的程序能够在不同版本的iOS上正常运行. 创建新工程 Xcode提供了很多种工程模

IOS研究之IOS开发笔记基础知识学习

本文是我的IOS学习笔记,都是基础的知识点,在这里记录下方面以后查询. 1,UIScrollView视图类能完成滚动的功能. 示例如下: UIScrollView *tableScrollView; tableScrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];//窗口大小 tableScrollView.contentSize=CGSizeMake(640, 480);//设置内容视图的大小 ta

iOS学习笔记-精华整理

iOS学习笔记总结整理 一.内存管理情况 1- autorelease,当用户的代码在持续运行时,自动释放池是不会被销毁的,这段时间内用户可以安全地使用自动释放的对象.当用户的代码运行告一段 落,开始等待用户的操作,自动释放池就会被释放掉(调用dealloc),池中的对象都会收到一个release,有可能会因此被销毁. 2-成员属性:     readonly:不指定readonly,默认合成getter和setter方法.外界毫不关心的成员,则不要设置任何属性,这样封装能增加代码的独立性和安全

iOS学习笔记---oc语言第三天

继承.初始化方法 一.继承 继承的上层:父类  继承的下层:子类 继承是单向的,不能相互继承 继承具有传递性:A继承于B,B继承于C,A具有B和C的特征和行为 子类能继承父类全部的特征和行为(私有变量也继承过来了,只是不能访问) 面向对象提供了继承语法.能大大简化代码,把公共的方法和实例对象写在父类里.子类只需要写自己独有的实例变量和方法即可 继承既能保证类的完整,又能简化代码 继承特点 oc中只允许单继承 没有父类的类称为根类,oc中得根类是NSObject(祖宗) 继承的内容:所有的实例变量

iOS学习笔记---oc语言第五天

字典,数组 ,集排序 一.字典类 存储以下数据 name:张三; sex:男;age:18 film:风暴; playcount:10000次;price:60元 字典类用于保存具有映射关系(key-value对)的数据 对于“name:张三”来讲,key就是“name”,key对应的value是“张 三” 一个key-value对认为是一个元素(实体),字典是存储key-value对 的容器. 特点: 与数组不同,数组靠下标存取数据,数组的下标是唯一的. 字典靠key存取元素.key不能重复,

iOS学习笔记---oc语言第四天

字符串 数组 一.使用苹果帮助文档 学会使?用苹果帮助?文档是开发者的?一项技能 Inherits from 继承?自 Conforms to 遵循什么协议 Framework 属于哪个框架 Availability 什么时候可?用的 Declared in 声明在什么头文件?里 Related documents 相关文档 Sample code ?示例代码 快速打开帮助文档 在代码中,将?鼠标停留在 类名或者?法名上,option+?鼠标左键,点击 Reference的超链接进?入帮助?文档

iOS 学习笔记——0005(数据存储)

先发一个练手的小demo,自己写的简略通讯录,已上传至github https://github.com/liaoshaolim/addressBook 1.NSKeyedArchiver:(归档) 这里用一个添加联系人的例子来说明: 注意:归档形式保存数据,需要该对象遵守NSCoding协议,而且对应的必须提供encodeWithCoder和initWithCoder方法 因为归档是一次性的,解压也是一次性的,所以小量的ok,如果量大的话,改一个小地方就要归档或解压全部,效率会比较低 //用一