ios常用的语法大全

1丶 UI基础——工程的创建
      1⃣️ 打开Xcode—>2⃣️ 选择create a new Xcode project 3⃣️ 选择single view来创建
      4⃣️ 设置项目名(product Name) 公司名称 公司唯一标示 ,完成创建


2丶 Xcode和模拟器常用的快捷键
      Xcode
          cmd+r                          运行
          cmd+b                        组件(编译+连接)
          cmd+.    停止程序
          cmd+鼠标左键    点进去看具体内容
          cmd+下    光标移到文件尾
          cmd+上    光标移到文件头
          cmd+control             在头文件和实现文件之间切换
          cmd+/                         注释本行(不需要选中)
          cmd+A                        全选
          control+i                      代码格式化(自动缩进)
          cmd+[                          左缩进
          cmd+]                          右缩进
          cmd+n                         新建文件
          cmd+shift+n               新建项目
      模拟器
          shift+cmd+h               回到(手机)桌面
          cmd+1/2/3     调整大小
          cmd+左右方向           调整模拟器的方向
          cmd+H     隐藏模拟器
          cmd+q                         退出模拟器
          cmd+s                          模拟器截屏(都在桌面上)
      mac电脑截图
          cmd+shift+3                全屏截图
          cmd+shift+4                区域截图


3丶 UI屏幕大小介绍
iPhone 4/4S
尺寸:3.5寸
大小:320 x 480


iPhone 5
尺寸:4.0寸
大小:320 x 568


iPhone 5S/5C
尺寸:4.0寸
大小:320 x 568


iPhone 6
尺寸:4.7寸
大小:375 x 667


iPhone 6 Plus
尺寸: 5.5寸
大小:414 x 736


4丶 IOS坐标系相关
       坐标系:坐标原点为屏幕左上角 (0,0)
       frame:大小以及位置   CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
       bounds:只有大小        CGSizeMake(CGFloat width, CGFloat height)
       center:决定位置(与frame不一样,这个是中心点位置)   CGPointMake(CGFloat x, CGFloat y)


5丶 UILabel
    5.1   UILabel的基本使用方法
    5.1.1   创建一个标签
UILabel *lable = [[UILabel alloc] init];
    5.1.2   显示文本
lable.text = @“hello world”;
    5.1.3   显示位置的设置
 lable.frame = CGRectMake(100, 100, 200, 200);
    5.1.4   将label显示到界面上
// 显示一个控件: 将lable控件添加到self.view上
    [self.view addSubview:lable];
    5.2   UILabel属性设置
       5.2.1   设置颜色
                 // 设置文本颜色 UIColor *
    lable.textColor = [UIColor redColor];
    // 设置背景颜色 UIColor *
    lable.backgroundColor = [UIColor yellowColor];
5.2.2   设置字体
                 // 设置字体
    lable.font = [UIFont systemFontOfSize:24];
       5.2.3   设置阴影
                  // 设置文本的阴影
    lable.shadowColor = [UIColor blueColor];
    // 设置阴影的位置
    /**(联系坐标系)
       width:正数右边偏移,负数左边偏移
       heigh:正数向下偏移,负数向上偏移
      */
    lable.shadowOffset = CGSizeMake(-10, 10);
        5.2.4   设置文字对齐方式
// 设置对齐方式(靠左,居中,靠右)
    lable.textAlignment = NSTextAlignmentRight;
lable.textAlignment = NSTextAlignmentLeft;
lable.textAlignment = NSTextAlignmentCenter;
        5.2.5   显示多行文本(文本换行)
// 细节: 默认显示一行
// 细节: 要保证lable的宽度
    // 0表示不限制
lable.numberOfLines = 0;
        5.2.6   设置窗口自动使用显示文本
// 文本有多大,窗口有多大
    // 细节: 不管高度宽度是否足够,都显示相应的高度
    // 细节: numberOfLines为1,那么就是单行显示
    [lable sizeToFit];
5.27 换行模式
// label.lineBreakMode = NSLineBreakByCharWrapping;
// label.lineBreakMode = NSLineBreakByClipping;
// label.lineBreakMode = NSLineBreakByTruncatingHead;
// label.lineBreakMode = NSLineBreakByTruncatingMiddle;
      label.lineBreakMode = NSLineBreakByTruncatingTail;




6丶 UIButton基本使用
      6.1   UIButton的基本使用方法
           6.1.1  UIButton的创建
// UIButton *button = [[UIButton alloc] init];
    // 一般情况都使用类方法方法创建
    // UIButtonTypeCustom 图片按钮
    // UIButtonTypeSystem 系统按钮
  UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
           6.1.2   UIButton设置按键名
 // 设置按键名
   // 参数forState : 设置默认UIControlStateNormal
[button setTitle:@"-按键-" forState:UIControlStateNormal];//普通状态
    [button setTitle:@"-按键-" forState:UIControlStateHighlighted];//按下去状态
[button setTitle:@"-按键-" forState:UIControlStateDisabled];//不可用状态
[button setTitle:@"-按键-" forState: UIControlStateSelected];//选择状态状态
            6.1.3   设置显示位置
 button.frame = CGRectMake(100, 100, 50, 30);
            6.1.3   显示到界面上
[self.view addSubview:button];
       6.2   UIButton属性设置
> 设置颜色
// 设置文本颜色
    [button setTitleColor:[UIColor greenColor]forState:UIControlStateNormal];
> 设置字体
    // 设置字体大小
    button.titleLabel.font = [UIFont systemFontOfSize:24];
> 按键的是否使能
 // 等于NO,即不能点击
    button.enabled = YES;
 > 按键的是否选中
// 是否被选中
        button.selected = NO;
 > 按键的状态
// 普通状态
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    // 高亮状态
    [button setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
    // 不可用状态
    [button setTitleColor:[UIColor grayColor] forState:UIControlStateDisabled];
    // 选中状态
    [button setTitleColor:[UIColor yellowColor] forState:UIControlStateSelected];
> 设置按键的背景图片
 // 设置背景
// forState设置为默认UIControlStateNormal
    [button setBackgroundImage:[UIImage imageNamed:@"btn_01.png"] forState:UIControlStateNormal];
> Tag值
    //  每个控件都有tag这个属性
    //  给这个属性赋任意的值,区分不同的控件
    //  10个按钮的事件处理方法都是一个
    button.tag = 100;
6.3 带图片按键 
> 带图片按键的创建
UIButton *imageButton= [UIButton buttonWithType:UIButtonTypeCustom];
    imageButton.frame = CGRectMake(100, 200, 100, 30);
 > 带图片按键的背景
//按钮添加背景图片
    [imageButton setBackgroundImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateNormal];
 > 带图片按键的左边图片
   //设置文本左边的图片
    [imageButton setImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal];
(6) 添加按键事件处理
    // 按键事件的添加
    //告诉按钮: 被点了应该执行那个方法
    // addTarget:由哪个对象处理点击事件
    // action:事件的处理方法
    // forControlEvents:控件事件类型
    /**
      一般常用的的几种状态,按下,按下内部触发,按下外部触发
      {
      UIControlEventTouchDown,
      UIControlEventTouchUpInside,
UIControlEventTouchUpOutside
      }
      */
    [button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
// 按键的处理方法
- (void)buttonClick{
   NSLog(@"我被点了");
}
6.4 事件处理中的参数传递
  // @selector(buttonClick)表示不带参数
    // @selector(buttonClick:)表示带有参数,参数就是按键本身
    [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside];
// 按键的处理方法(带参数)
- (void)buttonClick:(UIButton *)button{
    NSLog(@"button.tag:%ld",button.tag);
}
1、按键的边框设置
    //设置边框厚度
    rightButton.layer.borderWidth = 2;
   //设置边框颜色
    rightButton.layer.borderColor = [UIColor redColor].CGColor;
2、按键的圆角设置
// 按键设置圆角
rightButton.layer.cornerRadius = 10;
7丶 通过tag值找到相应的控件(在一个方法中 通过tag值可以在另一个方法中访问并修改相应控件的属性)
        UIButton *button = (UIButton *)[self.view viewWithTag:102];
UILabel * label     = (UILabel *)[self.view viewWithTag:1];


8丶 关闭和开启控件的用户交互功能 (即变为不可选择状态)
// 用户交互使能
        imageButton.userInteractionEnabled = NO;
9丶 把控件放到最前面/最后层
             [self.view bringSubviewToFront:view0];
             [self.view bringSubviewToBack:view0];


10丶 图片的拉伸
  // 图片的拉伸(内容可拉伸,而边角不拉伸的图片)
// stretchableImageWithLeftCapWidth左边不拉伸区域宽度
// topCapHeight上面不拉伸的高度
UIImage *image = [[UIImage imageNamed:@"table_cell_bg.png"] stretchableImageWithLeftCapWidth:8 topCapHeight:8];
    [button setBackgroundImage:image forState:UIControlStateNormal];


11丶 UIView
        11.1   UIView的理解
它是一个iOS开发中非常重要的类UILabel,UIButton,UIImageVIew父类或间接父类都是UIView
理解: 只要是界面上能看到的东西都是UIView


UIView起到什么作用?
控件都有一些共同的属性和行为
属性:位置和大小, 背景颜色
方法:显示和隐藏
把所有的控件的共同的属性和行为抽取出来, 形成了UIView视图类
        11.2   UIView的创建和基本属性
> 设置位置
> 设置背景色
> 设置透明度
> 设置中心位置
> 设置大小
> 设置标签tag值
> 设置是否响应用户的交互
// 用户交互使能
      imageView.userInteractionEnabled = YES;
        11.3   UIView的相互嵌套(界面的布局,自定义控件)
> view加入到其他view
> view中加入label和button
> button中加入ImageView和Label
> UIImageView加入UIButton(开启ImageView用户交互)
// 几乎所有控件都是UIView的子类或间接子类, UIView有个方法是addSubview, 意味"理论上"任何控件都可以相互组合
    // 组合,注意坐标是相对坐标,即子视图的坐标起点是父视图的左上角
    // 按钮直接加上图片上, 需要开启图片的用户交互
    // 后加上的视图叠加在前面的视图上面
        11.4   UIView的层次感,多个UIView的切换 层次关系
           1,  某个view1放在上面
                   UIView *view1 = [[UIView alloc] init];
         view1.frame = CGRectMake(100, 200, 100, 100);
       [self.view addSubview:view1];
  // 将图像按钮弄到最前面(调整视图的位置)
      // bringSubviewToFront将子视图前置
         [self.view bringSubviewToFront:view1];
           2,  某个view放在下面
[self.view sendSubviewToBack:view1];
           3,  视图的父视图
NSLog(@"%@",view3.superview);
           4,  一个视图有多少个子视图
                     NSArray *array = rootView.subviews;
     NSLog(@"count:%ld   array:%@",array.count,array);
子视图数组view.subViews,是视图加载过的子视图集合,既然是数组,那么他们是有序的,在数组里面越是靠前,在界面上的位置就越靠后
           5,  让一个视图消失
 view1.hidden = YES;
     view1.alpha = 0;
 //    彻底从父视图消失
     [view1 removeFromSuperview];
           6,  改变视图位置
                     // 将view4插入到view1的下面
    [rootView insertSubview:view4 belowSubview:view1];
           7,  交换两个视图的层次
                    [rootView exchangeSubviewAtIndex:3 withSubviewAtIndex:2];
        11.5   图片视图UIImageView
                 > 创建UIImageView
// 创建一个UIImageView
    UIImageView *imageView = [[UIImageView alloc] init];


> 设置显示图片
// 设置显示图片
imageView.image = [UIImage imageNamed:@"back2.jpg"];
        11.6   UIImageView动画
> UIImageView动画即设置多张图片进行快速切换
// 1、设置动画的图片数组,用可变数组来存储图片
    NSMutableArray *mArray = [[NSMutableArray alloc] init];
    for (int i=0; i<18; i++) {
        // button.currentTitle 获取按键的文本
        NSString *imageName = [NSString stringWithFormat:@"DOVE %d.png",i];
        // 将图片加入到可变数组中
        [mArray addObject:[UIImage imageNamed:imageName]];
    }
// 2、注意参数animationImages,返回的是数组
    imageView.animationImages = mArray;
    // 3、动画的次数
    imageView.animationRepeatCount = 1;
    // 4、动画持续时间
    imageView.animationDuration = 1.5; 
    // 开始动画
    [imageView startAnimating];


// 图片设置圆角
    /**
     首先,要说的是CALayers 是屏幕上的一个具有可见内容的矩形区域,每个UIView都有一个根CALayer,其所有的绘制(视觉效果)都是在这个layer上进行的。   
     其次,CALayer的可以影响其外观的特性有:
     层的大小尺寸
     背景色
     内容(比如图像或是使用Core Graphics绘制的内容)
     是否使用圆角
     是否使用阴影
     */
    CALayer *corner = [imageView layer];
    [corner setMasksToBounds:YES];
    [corner setCornerRadius:10.0];


12丶 UIViewController视图控制器
        12.1   UIViewController理解
          一般情况下, iOS应用都是由多个界面构成的, 为了管理每个界面, 系统提供了一个类 UIViewController类
UIViewController是一个非常重要的类,以后项目中一个界面就是一个UIViewController
        12.2   原来的程序架构
Screen  <—— Window  ——>  UIView ——> UILable(UIButton)
 12.3   使用视图控制器的程序架构
             Screen  <—— Window  ——> ViewController  ——>  UIView ——> UILable(UIButton)
             window也可以直接添加uiview对象,但一般不建议在window上操作
//    self.window = [[UIWindow alloc] init];
//    self.window.frame = [UIScreen mainScreen].bounds;
      self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
 12.4   MVC设计模式
     MVC是一种界面实现的设计模式。把每个界面的实现分成为model数据层,view视图,controller逻辑处理器。
> View视图,UILabel,UIButton,UIImageView。view负责把界面展示出来;
> Model数据模型,也可以理解为一个界面的数据属性。(NSString,NSDictionary,NSArray,还有对象属性);
> Controller控制器,简单来说,就是把数据显示到View上,然后通过view中的用户操作更新数据;
        12.5   视图间切换
> 如何创建一个用于管理界面的控制器?
  创建一个UIViewController的类 .m文件的方法要复制ViewController.m中的方法
> 实例化视图控制器
//创建了登录界面的实例
LoginViewController *lvc = [[LoginViewController alloc] init];


  > 如何指定根视图控制器?
//做为程序的第一个界面显示出来
//  只需要把lvc设置为根视图控制器即可
self.window.rootViewController = lvc;


> 如何在视图控制器中添加控件?
 // 视图控制器加载完成
   // 只会执行一次
    - (void)viewDidLoad {
[self.view addSubview:lable];
  }

> 如何从当前视图控制器切换到下一个视图控制器?
MainViewController *mvc = [[MainViewController alloc] init];


// 控制切换的动画风格
    //UIModalTransitionStyleCoverVertical 垂直翻转(下往上推)
    //UIModalTransitionStyleFlipHorizontal 左右翻转
    //UIModalTransitionStyleCrossDissolve 渐变消失
    //UIModalTransitionStylePartialCurl 翻页效果
mvc.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;


// 当前界面切换到下一个界面
[self presentViewController:mvc animated:YES completion:nil];


> 如何从当前视图控制器返回到上一个视图控制器?
[self dismissViewControllerAnimated:YES completion:nil];


        12.6   界面间传值 — 正向传值
             需求:  把登陆界面上得用户名传输到主界面上显示
界面传值: A界面创建B界面,  A界面的值传递到B界面
LoginViewController-------->用户名---->MainViewController
具体步骤
// 传值(正向传值)   A ---> B
    // 1、搞清楚值的传递反向 AViewController --> BViewController
// 2、需要传什么值过来
// 需要登陆界面传过来的用户名
@property (nonatomic,copy) NSString *userName;
// 3、实例化UIViewController对象
    MainViewController *mainVC = [[MainViewController alloc] init];
// 4、传值(访问属性)
    mainVC.userName = @"qqqqqqqqqqqqqqq";
// 5、使用传过来的数据
    UILabel *lable1 = [[UILabel alloc] init];
    lable1.frame = CGRectMake(0, 0, 50, 30);
   lable1.text = self.userName;


        12.7   视图控制器的事件处理(生命周期)
视图控制器从创建到显示过程:
alloc+init 创建
loadView 加载视图(不要重写,即[super loadView])
viewDidLoad 视图已经被加载完成了
viewWillAppear 视图即将显示
viewDidAppear 视图已经显示了


需求: 每次进入登录界面的时候弹出一个对话框
viewDidLoad 视图加载完成之后执行, 只会执行一次
viewDidAppear  视图现实的时候执行, 每次显示都会执行


视图控制器从显示到释放过程:
viewWillDisappear 视图即将消失
viewDidDisappear 视图已经消失
dealloc 销毁视图控制器


13丶 状态栏字体颜色更改
       步骤:    1,打开工程中 “工程名+tests”文件夹下的 “info.plist”文件 
                    2,点击information property List 后面的加号, 在弹出的搜索框中输入View controller-based status bar appearance,将后面的yes标签改为no
                    3,在入口界面的viewController.m的viewDidLoad中加入
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];状态栏文字即可改为白色


14丶 只初始化一次下次执行还会保存上次的值
  // 第一次进来初始化(即只执行一次) 
    static int i = 0;


15丶 输入框UITextField
        15.1   UITextField基本属性
// 创建UITextField
      UITextField *textField = [[UITextField alloc] init];
// 输入框文本
      textField.text = @"123";
//设置空白输入提示(点击输入框开始输入提示文字会消失)
      textField.placeholder = @"请输入用户名";
// 文本颜色
      textField.textColor = [UIColor redColor];
//设置键盘类型
 passwordTextFiled.keyboardType = UIKeyboardTypeNumberPad;
// 密文输入
      textField.secureTextEntry = YES;
//当进入编辑状态,首次键入内容,会清除之前的内容
      textField.clearsOnInsertion = YES;
         // 边框类型
    //设置边框类型(默认为没有边框)
      UITextBorderStyleNone,没有边框
      UITextBorderStyleLine,黑线边框
      UITextBorderStyleBezel,带阴影的灰色边框
      UITextBorderStyleRoundedRect,圆角边框
      textField.borderStyle = UITextBorderStyleRoundedRect;
    // 边框圆角,边框宽度 边框颜色
              textField.layer.cornerRadius = 10;
    textField.layer.borderWidth = 2;
     textField.layer.borderColor = [UIColor blueColor].CGColor;
// 输入框背景
      // 注意:只有在没有边框的情况下才能显示背景
      textField.borderStyle = UITextBorderStyleNone;
      textField.background = [UIImage imageNamed:@"back"];
        // 输入框左边图片
      textField.leftView = leftView;
      // 注意:textField默认是不显示左边图片的
      textField.leftViewMode = UITextFieldViewModeAlways;
    //清除按钮显示情景
      UITextFieldViewModeNever,默认为一直不显示
      UITextFieldViewModeWhileEditing,编辑状态时显示
      UITextFieldViewModeUnlessEditing,非编辑状态时显示
      UITextFieldViewModeAlways,一直显示
    // 注意是在有输入,或者是有文本时,会显示按钮,如果只有提示文本是不会显示的
      textField.clearButtonMode = UITextFieldViewModeAlways;
//改变return 键的显示效果
 textField.returnKeyType = UIReturnKeyGo;
// 自动大小模式
//设定textField首字母大写的类型
  UITextAutocapitalizationTypeNone,没有大写设定
       UITextAutocapitalizationTypeWords,单词首字母大写
       UITextAutocapitalizationTypeSentences,句子首字母大写
       UITextAutocapitalizationTypeAllCharacters,段落首字母大写
  textField.autocapitalizationType = NO;
// 单词自动修正
// UITextAutocorrectionTypeNo,不会自动修复单词
    // UITextAutocorrectionTypeYes,会自动修复单词
       textField.autocorrectionType = UITextAutocorrectionTypeYes;
// 激活输入框,使它成为第一响应
       [textField becomeFirstResponder];
// 取消输入框的第一响应
  [textField resignFirstResponder];
// 点击屏幕键盘回收
  - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  // 方法一
  // [self.view endEditing:YES];
  // 方法二
       UITextField *textField = (UITextField *)[self.view viewWithTag:100];
  // 取消第一响应值
       [nextField resignFirstResponder];
  }


        15.2   UITextField与代理
> 遵守协议
// 遵守协议,这是为了更快的敲出代理方法!!!
@interface ViewController () <UITextFieldDelegate>

> 成为输入框的代理
    // 对于界面: 知道输入事件的处理
    //          不知道输入框输入完成
    // 对于输入框: 自己知道什么时候输入完成
    //          不知道如何处理
textField.delegate = self;
  // 解决: 当输入框输入完成后, 输入框通知界面做出需要的操作


> 代理方法详情
// 输入框将要输入内容回调方法(参数为textField本身,返回参数决定textField能否编辑)
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
    // 默认为YES,设置为NO时,textField不能被编辑
    return YES;
}


// 开始编辑的时候调用的方法,即输入框成为第一响应者的时候
- (void)textFieldDidBeginEditing:(UITextField *)textField{
    NSLog(@"输入框开始编辑");
}


// 输入框将要结束编辑的时候调用的方法
-(BOOL)textFieldShouldEndEditing:(UITextField *)textField{
    // 默认YES为允许结束编辑,NO时不能结束编辑,不能结束编辑意味着键盘无法回收
    return YES;
}


// 输入框结束编辑调用的方法,即输入框取消第一响应者的时候
-(void)textFieldDidEndEditing:(UITextField *)textField{
    NSLog(@"文本输入框结束编辑");
}




// 字符串改变时调用的方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
NSLog(@"%@",string);
    //textField.text为改变前的字符串
    //Range为将要改变(输入或删除)字符的位置和长度
    /*
     输入时,将要改变的字符为@"",lenth = 0, location 为当前字符位置
     删除时,将要改变的字符为前一个字符,lenth = 1 (如果是删除多个例如3个,那么lenth就为3),location为当前字  符位置 + 1
     */
return YES;
}


// 点击键盘的return调用的方法
- (BOOL)textFieldShouldReturn:(UITextField *)textField{
    NSLog(@"textFieldShouldReturn:%@",textField.text);
    return YES;
}


// 点击输入框中的清除按钮
- (BOOL)textFieldShouldClear:(UITextField *)textField{
    NSLog(@"textFieldShouldClear:%@",textField.text);
    return YES;
}
        15.3   自定义键盘
         // 自定义键盘
         UIImageView *inputView = [self createInputView];
     _textField1.inputView = inputView;
- (UIImageView *)createInputView{
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.userInteractionEnabled = YES;
    imageView.frame = CGRectMake(0, 0, 320, 200);
    imageView.backgroundColor = [UIColor grayColor];
    
_emojiArray = @[@"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值