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;

5、控件相关操作部分示例代码:

    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;

}

9、资源
png图片可以直接拖到Assets.xcassets中,jpg图片要用要拖到Supporting Files中

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方法,如

//定义属性时如果不指定getset方法会自动生成,并且会生成带下划线变量,如果是readonly则没有下划线变量

@property (nonatomic,strong,readonly)UIImage *image;


13、在实际项目中,为了代码更清晰,更符合mvc设计模式,通常将模型和控制器分离,即将所需要的数据封装在一个模型类中,在控制代码中直接调用这个类即可,在封装这个模型类的时候一般设置一个实例方法和类方法(又叫工厂方法),这样更方便数据的调用。例如

//懒加载,字典封装

-(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类型,会让编译器检查实例化对象的准确类型,只能用于返回类型,不能当作参数使用。
15、XIB,跟storyboard非常相似,是在xcode4.5以前主力的开发界面的技术 XIB量级轻,可以自定义某个局部的小视图,sb量级重,可以设计系统的所有界面
新建空的用户接口得到XIB,

//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来取子视图





19、常用的快捷键
新建项目                 shift+cmd+n
新建文件                 cmd+n
打开助理编辑器      option+cmd+回车
显示主窗口             cmd+回车
导航窗口                 cmd+0
工具窗口                 option+cmd+0
在.m和.h之间切换   control+cmd+上下
按照浏览文件的先后顺序切换control+cmd+左右
查看头文件             control+cmd+j
切换到对应的函数  control+6
运行                       cmd+r
停止                        cmd+.
编译                       cmd+b
静态内存分析编译,可以检查程序结构上是否存在内存泄漏 cmd+shift+b


20、修改状态栏颜色

-(UIStatusBarStyle)preferredStatusBarStyle

{

    return UIStatusBarStyleLightContent;

}

改成白色


0 0
原创粉丝点击