一.UIView
1.UIView的常见属性
@property(nonatomic,readonly) UIView *superview;
获得自己的父控件对象
@property(nonatomic,readonly,copy) NSArray *subviews;
获得自己的所有子控件对象
@property(nonatomic) NSInteger tag;
控件的ID(标识),父控件可以通过tag来找到对应的子控件
@property(nonatomic) CGAffineTransform transform;
控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
2.UIView的常用方法
- (void)addSubview:(UIView *)view;
添加一个子控件view
- (void)removeFromSuperview;
从父控件中移除
- (UIView *)viewWithTag:(NSInteger)tag;
根据一个tag标识找出对应的控件(一般都是子控件)
3.UIView的位置和尺寸的问题
@property(nonatomic) CGRect frame;
控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
@property(nonatomic) CGRect bounds;
控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
@property(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)
二.UILabel
属性:
设置label显示的文字
label.text = @"Hello world Hello world Hello world Hello world Hello world";
设置对齐模式
label.textAlignment = NSTextAlignmentCenter;
设置换行模式
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
自动换行
label.numberOfLines = 0;
02-UIImageView-设置imageView的frame
01-initWithImage
默认尺寸就是图片的尺寸,位置默认从(0,0)开始
02- imageView.frame = CGRectMake(100,100, imageView.image.size.width, imageView.image.size.height);
注意尺寸不能设置在图片之前,因为图片还没创建,如果先设置就会显示不出来.
03-直接赋值size,但会出现OC语法错误
错误代码:imageView.frame.size.width = imageView.image.size.width
原因:不能直接修改OC对象结构体属性的成员
04-常见写法
imageView.frame = (CGRect){CGPointMake(100,100), imageView.image.size};
imageView.frame = (CGRect){CGPointMakeZero, imageView.image.size};
05-修改frame的3中方式(同样适用于bounds/center)
1.直接使用CGRectMake函数
2.利用临时结构体变量
3.直接运用结构体赋值
01-initWithImage
* 默认尺寸就是图片的尺寸,位置默认从(0,0)开始
02- imageView.frame = CGRectMake(100,100, imageView.image.size.width, imageView.image.size.height);
* 注意尺寸不能设置在图片之前(演示)
03-直接赋值size,但会出现OC语法错误
错误代码:imageView.frame.size.width = imageView.image.size.width
原因:不能直接修改OC对象结构体属性的成员
04-常见写法
imageView.frame = (CGRect){CGPointMake(100,100), imageView.image.size};
imageView.frame = (CGRect){CGPointMakeZero, imageView.image.size};
05-修改frame的3中方式(同样适用于bounds/center)
1.直接使用CGRectMake函数
2.利用临时结构体变量
CGRect tempFrame = imageView.frame; // frame是一个新定义的变量
tempFrame = imageView.image.size;
imageView.frame = tempFrame; // 如果少了这一句(不是对象,是结构体)
3.直接运用结构体赋值
四.UIImageView的资源管理
如果将图片放到supporting Files要注意几点,勾选copy是将原来的文件拷贝一份到文件夹中,不勾选的话项目文件中是没有的,仅仅是引用,如果删除的话有可能影响源文件中的文件.在开发中尽量勾选copy,这样可以使文件独立,也不会影响源文件.如果是方法哦images.xcassets中,默认是将源文件拷贝.
Add to targets是将文件打包到软件安装包中去,如果没有勾选这个选项就会造成软件运行过程中丢失某些图片或者音效.因为安装包中没有这些文件.
Added to folder中有两个选项,如果勾选Create groups,系统会创建一个虚拟的文件夹,如果勾选了如果勾选Create folder references系统就真的会创建一个文件夹.两个文件夹的颜色不一样.这样可以区分哪些是虚拟的文件夹哪些是真是存在的文件夹.
加载图片有两种方式,一种是有缓存的加载,一种是没有缓存的加载.01-图片的两种加载方式
- 有缓存
UIImage *image =[UIImage imageNamed:@"图片名"];
使用场合:图片比较小、使用频率比较高
建议:把需要缓存的图片放到Images.xcassets
- 没有缓存
NSString *file = [[NSBundle mainBundle] pathForResource:@"图片名" ofType:@"图片扩展名"];
UIImage *image = [UIImage imageWithContentOfFile:file];
*只要方法名带有file的,都是传全路径
使用场合:图片比较大,使用频率比较低
建议:不需要缓存的图片不能放在Images.xcassets中
- 放到Image.xcassets中的图片只能通过图片名去加载,苹果会压缩图片,而且默认带有缓存
五.资源的加载
事实上,很多资源都是加载项目中的,项目中的资源都是通过mainBundle来获取.如
NSBundle *bundle = [NSBundle mainBundle]
1.UIView的常见属性
@property(nonatomic,readonly) UIView *superview;
获得自己的父控件对象
@property(nonatomic,readonly,copy) NSArray *subviews;
获得自己的所有子控件对象
@property(nonatomic) NSInteger tag;
控件的ID(标识),父控件可以通过tag来找到对应的子控件
@property(nonatomic) CGAffineTransform transform;
控件的形变属性(可以设置旋转角度、比例缩放、平移等属性)
2.UIView的常用方法
- (void)addSubview:(UIView *)view;
添加一个子控件view
- (void)removeFromSuperview;
从父控件中移除
- (UIView *)viewWithTag:(NSInteger)tag;
根据一个tag标识找出对应的控件(一般都是子控件)
3.UIView的位置和尺寸的问题
@property(nonatomic) CGRect frame;
控件矩形框在父控件中的位置和尺寸(以父控件的左上角为坐标原点)
@property(nonatomic) CGRect bounds;
控件矩形框的位置和尺寸(以自己左上角为坐标原点,所以bounds的x、y一般为0)
@property(nonatomic) CGPoint center;
控件中点的位置(以父控件的左上角为坐标原点)
二.UILabel
属性:
设置label显示的文字
label.text = @"Hello world Hello world Hello world Hello world Hello world";
设置对齐模式
label.textAlignment = NSTextAlignmentCenter;
设置换行模式
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
自动换行
label.numberOfLines = 0;
三.UIImageView
1.frame的设置02-UIImageView-设置imageView的frame
01-initWithImage
默认尺寸就是图片的尺寸,位置默认从(0,0)开始
02- imageView.frame = CGRectMake(100,100, imageView.image.size.width, imageView.image.size.height);
注意尺寸不能设置在图片之前,因为图片还没创建,如果先设置就会显示不出来.
03-直接赋值size,但会出现OC语法错误
错误代码:imageView.frame.size.width = imageView.image.size.width
原因:不能直接修改OC对象结构体属性的成员
04-常见写法
imageView.frame = (CGRect){CGPointMake(100,100), imageView.image.size};
imageView.frame = (CGRect){CGPointMakeZero, imageView.image.size};
05-修改frame的3中方式(同样适用于bounds/center)
1.直接使用CGRectMake函数
2.利用临时结构体变量
3.直接运用结构体赋值
01-initWithImage
* 默认尺寸就是图片的尺寸,位置默认从(0,0)开始
02- imageView.frame = CGRectMake(100,100, imageView.image.size.width, imageView.image.size.height);
* 注意尺寸不能设置在图片之前(演示)
03-直接赋值size,但会出现OC语法错误
错误代码:imageView.frame.size.width = imageView.image.size.width
原因:不能直接修改OC对象结构体属性的成员
04-常见写法
imageView.frame = (CGRect){CGPointMake(100,100), imageView.image.size};
imageView.frame = (CGRect){CGPointMakeZero, imageView.image.size};
05-修改frame的3中方式(同样适用于bounds/center)
1.直接使用CGRectMake函数
2.利用临时结构体变量
CGRect tempFrame = imageView.frame; // frame是一个新定义的变量
tempFrame = imageView.image.size;
imageView.frame = tempFrame; // 如果少了这一句(不是对象,是结构体)
3.直接运用结构体赋值
四.UIImageView的资源管理
如果将图片放到supporting Files要注意几点,勾选copy是将原来的文件拷贝一份到文件夹中,不勾选的话项目文件中是没有的,仅仅是引用,如果删除的话有可能影响源文件中的文件.在开发中尽量勾选copy,这样可以使文件独立,也不会影响源文件.如果是方法哦images.xcassets中,默认是将源文件拷贝.
Add to targets是将文件打包到软件安装包中去,如果没有勾选这个选项就会造成软件运行过程中丢失某些图片或者音效.因为安装包中没有这些文件.
Added to folder中有两个选项,如果勾选Create groups,系统会创建一个虚拟的文件夹,如果勾选了如果勾选Create folder references系统就真的会创建一个文件夹.两个文件夹的颜色不一样.这样可以区分哪些是虚拟的文件夹哪些是真是存在的文件夹.
加载图片有两种方式,一种是有缓存的加载,一种是没有缓存的加载.01-图片的两种加载方式
- 有缓存
UIImage *image =[UIImage imageNamed:@"图片名"];
使用场合:图片比较小、使用频率比较高
建议:把需要缓存的图片放到Images.xcassets
- 没有缓存
NSString *file = [[NSBundle mainBundle] pathForResource:@"图片名" ofType:@"图片扩展名"];
UIImage *image = [UIImage imageWithContentOfFile:file];
*只要方法名带有file的,都是传全路径
使用场合:图片比较大,使用频率比较低
建议:不需要缓存的图片不能放在Images.xcassets中
- 放到Image.xcassets中的图片只能通过图片名去加载,苹果会压缩图片,而且默认带有缓存
五.资源的加载
事实上,很多资源都是加载项目中的,项目中的资源都是通过mainBundle来获取.如
NSBundle *bundle = [NSBundle mainBundle]