ios开发基础控件笔记
来源:互联网 发布:mac如何转换输入法 编辑:程序博客网 时间:2024/06/06 20:06
1、oc前缀NS
2、使用storyboard搭建界面时与界面相关的控件变量类型是IBOutlet,方法是IBAction。CG前缀(位置等物理信息)
3、为按钮添加相应响应函数用addTarget,示例:
[self.button addTarget:selfaction:@selector(callBackButton)forControlEvents:UIControlEventTouchUpInside];
4、其他:枚举类型的使用,用c,c++的方式也可以,为第一个变量赋值后后面自动递增,不赋值第一个变量自动赋值0.示例声明并直接实例化一个枚举变量的方法(没有类型名,直接用实例化名字实例化)。
enum
{
TAG_MOVE_U=11,
TAG_MOVE_D,
TAG_MOVE_L,
TAG_MOVE_R
}kMoveDirTag;
self.buttonNext=[[UIButtonalloc]initWithFrame:CGRectMake(315, 270, 50, 50)];
[self.buttonNextsetImage:[UIImageimageNamed:@"right_normal"]forState:UIControlStateNormal];
[self.buttonNextsetImage:[UIImageimageNamed:@"right_highlighted"]forState:UIControlStateHighlighted];
[self.buttonNextsetImage:[UIImageimageNamed:@"right_disabled"]forState:UIControlStateDisabled];
[self.viewaddSubview:self.buttonNext];
[self.buttonNextaddTarget:selfaction:@selector(callBackButton:)forControlEvents:UIControlEventTouchUpInside];
[self.buttonNextsetTag:TAG_BUTTON_RHGHT];
6、property的weak和strong的区别:ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制,对象的申请和释放工作在运行时,由编译器自动添加retain和release。强指针:strong系统一般不会自动释放,在oc中,对象默认都是强指针。弱指针:weak 系统会立即释放对象。除了用懒加载getter方法外1>控件用weak(控件被view强指,所以在view controller中用弱指即可)2>属性对象用strong 3>非对象类型用assign 4>字符串NSString用copy 一般一个对象只有一个强指针指向他,这样当他释放时其他所有的弱指针也随之释放,而当弱指针释放时,如果强指针还在,那对象就不会被释放。
7、plist
新建一个propertylist的原文件,就可以得到一个可以在可视化编辑窗口中编辑的plist文件,实际是xml文件,以array为例,在代码中这样调用
NSString *path=[[NSBundlemainBundle]pathForResource:@"imageData"ofType:@"plist"];
_imageList=[NSArrayarrayWithContentsOfFile:path];
imageData就是plist的文件名,plist是文件类型,path是定位到plist文件在包中的路径,第二句赋值给imageless这个变量。8、懒加载(控件或其他变量在用的时候在加载到内存之中),只需要重写变量的get方法即可(oc中在声明property的时候自动生成该变量的set和get方法,并自动实例化下划线变量)
例:懒加载imageList
@property (nonatomic,strong)NSArray *imageList;
- (NSArray *)imageList
{
if(_imageList==nil)
{
NSDictionary *dict1=@{@"name":@"biaoqingdi",@"desc":@"表情"};
NSDictionary *dict2=@{@"name":@"bingli",@"desc":@"病例"};
NSDictionary *dict3=@{@"name":@"chiniupa",@"desc":@"吃牛排"};
NSDictionary *dict4=@{@"name":@"danteng",@"desc":@"蛋疼"};
NSDictionary *dict5=@{@"name":@"wangba",@"desc":@"王八"};
_imageList=@[dict1,dict2,dict3,dict4,dict5];
}
return_imageList;
}
UIImage *image=[UIImageimageNamed:imageName];这种方法加载的图片不会自动释放,可以用于占用空间比较小,经常用到的资源。
10、序列帧动画
播放序列帧动画代码示例
NSMutableArray *arrayM=[NSMutableArrayarray];
for(int i=0;i<count;i++)
{
NSString *imageName=[NSStringstringWithFormat:@"%@_%02d.jpg",img,i];
UIImage *image=[UIImageimageNamed:imageName];
[arrayM addObject:image];
}
[self.tomsetAnimationImages:arrayM];
[self.tomsetAnimationRepeatCount:1];
[self.tomsetAnimationDuration:arrayM.count*0.075];
[self.tomstartAnimating];
11、区间动画,注释部分和非注释部分是两种方法,非注释部分可以设置结束效果
//动画效果
// [UIView beginAnimations:nil context:nil];
// [UIView setAnimationDelay:1.0];
// label.alpha=1.0;
// [UIView commitAnimations];
[UIView animateWithDuration:1.0 animations:^{
label.alpha=0.0;
}completion:^(BOOL finished)
{
[label removeFromSuperview];
}];
12、属性(变量)声明是会自动生成get方法和set方法及一个下划线变量,但是如果设置成只读类型则不会生成下划线变量和set方法,如
//定义属性时如果不指定get,set方法会自动生成,并且会生成带下划线变量,如果是readonly则没有下划线变量
@property (nonatomic,strong,readonly)UIImage *image;
//懒加载,字典封装
-(id)initWithDict:(NSDictionary *)dict
{
self = [superinit];
if (self) {
self.name=dict[@"name"];
self.icon=dict[@"icon"];
}
return self;
}
//懒加载,image封装
-(UIImage *)image
{
if(!_image)
{
_image=[UIImageimageNamed:self.icon];
}
return _image;
}
//类方法
+(id)appInfoWithDict:(NSDictionary *)dict
{
return [[selfalloc]initWithDict:dict];
}
14、instancetype类型,会让编译器检查实例化对象的准确类型,只能用于返回类型,不能当作参数使用。//loadNibNamed 会将"xib名字"中定义的所有的视图全部加载出来,并且按照xib中的顺序返回一个数组
NSArray * array= [[NSBundlemainBundle]loadNibNamed:@"AppInfo"owner:niloptions:nil];
UIView *view =[array firstObject];//xib中的第一个视图
UIImageView *imageView=appView.subviews[0];//按照这个视图中的子视图的顺序可以得到其中的子视图
UIImageView *imageView=(UIImageView *)[appViewviewWithTag:1];//或者通过viewwithTag通过tag来取子视图
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
改成白色- ios开发基础控件笔记
- iOS开发控件基础
- iOS开发基础 - 基础控件
- IOS开发随手笔记(UI控件基础类)---1
- 笔记:ios开发基础
- iOS开发基础控件--UILabel
- iOS开发基础控件--UITextField
- iOS开发基础控件--UIButton
- iOS开发基础控件--UISegmentedControl
- iOS开发----Swift基础控件
- iOS基础开发-自定义控件
- 系列:iOS 开发-基础控件
- ios学习笔记(二)基础控件
- 1、iOS 开发之基础控件
- iOS开发-UI控件:UICollectionView基础
- iOS开发 一些基础控件知识
- iOS开发基础控件--标签(UILabel)
- iOS开发基础控件--按钮(UIButton)
- 网络编程中的一些问题总结
- 01-百思不得姐(第一天)
- 1_简单的C程序反汇编及分析
- 数据结构——红黑树(red-black tree)
- Genymotion无法启动,VM VirtualBox报错
- ios开发基础控件笔记
- Linux System Programming读书笔记之进程调度算法CFS
- hdu 1106 排序
- 26. Remove Duplicates from Sorted Array
- (一) Freemarker 简介 && 环境搭建
- 查询1/2/3/4
- C++中的new/delete与operator new/operator delete
- C语言itoa()函数和atoi()函数详解(整数转字符C实现)
- DP之收了前几天的flag系列【树状数组优化