zoukankan      html  css  js  c++  java
  • UILable  /  UITextField  /   UIButton

    // 获取屏幕大小的view
    UIView *contentView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds]; // bound是个矩形 bounds类型是CGRect
     

    #pragma mark - UILable知识点

       
        // UILable(标签),继承自UIView,主要用来显示文本,是在UIView基础上扩充出来的功能
        /*
         1.创建控件
         2.配置控件的属性
         3.添加到父视图
         4.释放控件
        
         */
    // 1.创建UILable控件
        UILabel *lable = [[UILabel alloc] initWithFrame:CGRectMake(10, 80, 300, 80)];// 使用父类的方法创建
       
        // 2.配置UILable的属性
        // 2.1 背景颜色
        lable.backgroundColor = [UIColor greenColor];
       
        // 2.2 设置显示的文本
        lable.text = @"AV达人 zhaoYaZhou and liuNing and liGuoQing and wangZhongJian";
       
        // 2.3 设置文本颜色
        lable.textColor = [UIColor whiteColor];
       
        // 2.4 设置文本字体
        // 设置的是系统默认字体大小
        lable.font = [UIFont systemFontOfSize:10];
        // 字体采用加粗的字体样式
        lable.font = [UIFont boldSystemFontOfSize:40];
        // 遍历系统中所有的字体名字
        for (NSString *name in [UIFont familyNames]) { //familyNames 是个数组
           
            NSLog(@"%@", name);
           
        }
        // 设置字体
        lable.font = [UIFont fontWithName:@"Didot" size:18];
       
        // 2.5 设置文本行数
        // numberOfLines 设置为0,表示不限制行数,自动填充到lable中
        // numberOfLines 默认值是1
        lable.numberOfLines = 0;
       
        // 2.6 设置换行格式
        // 根据单词换行
        //NSLineBreakByWordWrapping (默认)
        // 根据字符换行
        lable.lineBreakMode = NSLineBreakByCharWrapping;
       
        // 2.7 设置字体的阴影颜色
        lable.shadowColor = [UIColor redColor];
        // 2.8 设置阴影偏移量
        lable.shadowOffset = CGSizeMake(-2, -2);
       
        // 2.9 设置文本对齐方式
        // NSTextAlignmentLeft 左对齐
        // NSTextAlignmentRight 右对齐
        // NSTextAlignmentCenter 居中
        lable.textAlignment = NSTextAlignmentCenter;
       
        // 2.10 给lable切圆角,下面两个属性要同时设定
        lable.layer.cornerRadius = 20;
        lable.layer.masksToBounds = YES;
        // 3.添加到父视图
        [contentView addSubview:lable];
       
        // 4.释放控件
        [lable release];
     

    #pragma mark - UITextField知识点

    //    UITextField 继承自UIControl,是在UILable的基础上扩充了文本输入的功能,可以允许用户输入文本,编辑文字
    //  UIControl 继承自UIView
        // shift + command + k : 回收键盘
        // 1. 创建UITextField对象
        UITextField *textField = [[UITextField alloc]initWithFrame:CGRectMake(10, 200, 300, 40)]; // 也是使用父类的方法创建
       
        // 2. 配置UITextField的属性
        // 2.1 设置背景颜色
        textField.backgroundColor = [UIColor whiteColor];
        // 2.2 设置textField的提示字符
        textField.placeholder = @"请输入名字";
        // 2.3 设置输入框中的文本
        textField.text = @"AV达人";
        // 2.4 设置文本输入框字体的颜色 (只影响输入字体的颜色,不影响提示字符)
        textField.textColor = [UIColor orangeColor];
        // 2.5 设置文本输入的对齐方式
        textField.textAlignment = NSTextAlignmentLeft;
        // 2.6 设置textField输入框是否可以编辑.默认是可编辑的
        //textField.enabled = NO;
        // 关闭用户交互
        //textField.userInteractionEnabled = NO;
        // 2.7 当文本输入框开始编辑的时候是否清空输入框中的内容,默认值是NO,只在第一次起作用
        textField.clearsOnBeginEditing = YES;
        // 2.8 设置键盘弹出的样式.
        textField.keyboardType = UIKeyboardTypeDefault;
        // 2.9 设置return键的样式
        textField.returnKeyType = UIReturnKeyGo;
        // 2.10 设置输入边框的样式
        /*
        
         UITextBorderStyleNone, // 无边框样式
         UITextBorderStyleLine, // 实线边框
         UITextBorderStyleBezel, // 倾斜面边框
         UITextBorderStyleRoundedRect // 圆角边框
        
        */
        textField.borderStyle = UITextBorderStyleRoundedRect;
        textField.layer.cornerRadius = 20;// 这种也行
       
        // 2.11 设置键盘的弹出视图, 可以在弹出视图上自定义键盘
        /*
        UIView *inputView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
        inputView.backgroundColor = [UIColor cyanColor];
        textField.inputView = inputView;
        [inputView release];
        */
        // 2.12 设置键盘的辅助视图
        UIView *accseeView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 40)];
        accseeView.backgroundColor = [UIColor redColor];
        textField.inputAccessoryView = accseeView;
        [accseeView release];
       
        // 2.13 设置文本输入框的清空按钮
        /*
         UITextFieldViewModeNever,
         UITextFieldViewModeWhileEditing, // 开始编辑时出现清空按钮
         UITextFieldViewModeUnlessEditing, // 当不编辑时弹出清空按钮,编辑时按钮消失
         UITextFieldViewModeAlways // 一直显示,除非输入框中没有内容
         */
        textField.clearButtonMode = UITextFieldViewModeUnlessEditing;
       
        // 2.14 设置文本输入框是否以密文形式显示输入内容
        textField.secureTextEntry = YES;
       
        // 2.15 设置代理属性
        /*
        如何使用系统写好的协议设置代理
         1. 设置代理
         2. 让代理对象遵循协议
         3. 实现协议中的方法
         4. 告诉代理什么时候去干活
         */
       
        textField.tag = 250;
       
        textField.delegate = self;
    ////////////////////
    #pragma mark - 实现UITextField协议中的方法
    // called when 'return' key pressed. return NO to ignore.
    // 当点击return按钮的时候触发此方法
    - (BOOL)textFieldShouldReturn:(UITextField *)textField { // textField会自动传过来,不用管
        // 取消第一响应者 取消的效果就是回收键盘
        [textField resignFirstResponder];
        return YES;
    }
    /////////////////
     
        // 3.添加到父视图
        [contentView addSubview:textField];
       
        // 4.释放
        [textField release];

    // 2.15 设置代理属性
        /*
        如何使用系统写好的协议设置代理
         1. 设置代理
         2. 让代理对象遵循协议
         3. 实现协议中的方法
         4. 告诉代理什么时候去干活 (点击return的时候)
         */
     
     
    或者也可以在AppDelegate类的延展上遵循协议,如下:
     
    textField.delegate = self; // 设置代理,代理是AppDelegate
     
    #pragma mark - 实现UITextField协议中的方法
    // called when 'return' key pressed. return NO to ignore.
    // 当点击return按钮的时候触发此方法
    - (BOOL)textFieldShouldReturn:(UITextField *)textField { // textField会自动传过来,不用管
        // 取消第一响应者 取消的效果就是回收键盘
        [textField resignFirstResponder];
        return YES;
    }
     
    另一种方法:
     contentView.tag = 200; // 设置contentView的tag值
     textField.tag = 250;
    #pragma mark - 点击空白处实现回收键盘
    // 点击屏幕时,手指离开的瞬间触发
    - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
        // 先拿到contentView
        UIView *contentView = [self.window viewWithTag:200];
       
        // 通过tag值取出textField
        UITextField *textField = (UITextField *)[contentView viewWithTag:250];
        // 取消第一响应者
        [textField resignFirstResponder];
       
    }
     
    /*
    // 有时需要注意类型转换
    // 点击空白处收回键盘
    -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
       
        for (int i = 200; i < 206; i++) {
           
            LTView *t = (LTView *)[self viewWithTag:i]; 
            [t.textField resignFirstResponder];
           
        }
    }
    */
     

    #pragma mark - UIButton知识点


    //    UIButton 继承自UIControl,是iOS中用来响应用户点击事件的按钮
        // UIButton 有自己的创建方法
        // 1. 创建UIButton对象
        /*button的样式
         UIButtonTypeCustom ,      //!!!! 自定义样式, 如果要给button添加图片,必须使用此种样式
         UIButtonTypeSystem ,    // standard system button 系统样式
        
         UIButtonTypeDetailDisclosure,   // 详情按钮
         UIButtonTypeInfoLight,          // 详情按钮
         UIButtonTypeInfoDark,           // 详情按钮
         UIButtonTypeContactAdd,         // 加号按钮
         */
        UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; // 不用释放button
       
        // 2.配置button的属性
        // 2.1 背景颜色
        button.backgroundColor = [UIColor cyanColor];
        // 2.2 单独设置button的frame(位置和大小)
        button.frame= CGRectMake(30, 260, 260, 50);
        // 2.3 给button切圆角
        button.layer.cornerRadius = 7;
       
        //! 2.4 给button添加标题, 注意添加标题的时候一定要指明,button的状态
        /*状态
         UIControlStateNormal       = 0,
         UIControlStateHighlighted  = 1 << 0,                  // used when UIControl isHighlighted is set
         UIControlStateDisabled     = 1 << 1,
         UIControlStateSelected     = 1 << 2,                  // flag usable by app (see below)
         UIControlStateApplication  = 0x00FF0000,              // additional flags available for application use
         UIControlStateReserved     = 0xFF000000
        
         */
        //[button setTitle:@"正常状态" forState:UIControlStateNormal];
        //[button setTitle:@"高亮状态" forState:UIControlStateHighlighted]; // 按住不丢
        //[button setTitle:@"不可用状态" forState:UIControlStateDisabled];
        //[button setTitle:@"可选中状态" forState:UIControlStateSelected]; // 触发不了
       
        [button setTitle:@"登录" forState:UIControlStateNormal];
       
       
        // 2.5 设置button的状态是否可用
        //button.enabled = NO;
       
        // 2.6 设置button上title的文字大小
        //! button是个复合视图,集成了几种控件, 其中titleLable是用来放置标题的,还有一个imageView用来显示图片
        button.titleLabel.font = [UIFont systemFontOfSize:20];
        // 2.7 设置button内容的颜色
    //    [button.titleLabel.textColor] = [UIColor redColor]; // 这种改不了文本颜色
        button.tintColor = [UIColor grayColor]; // tintColor
       
        /*
        // 2.8 给button添加图片
        //! 要添加图片,要换成 UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 自定义格式才能添加图片
    //    UIImage 继承自NSObject,不是一个视图,如果要展示UIImage需要使用UIImageView来展示
        // .png格式的图片不需要加后缀,其他格式都需要加后缀
        UIImage *image1 = [UIImage imageNamed:@"立即.jpg"]; // png格式的图片不需要加后缀了
        UIImage *image2 = [UIImage imageNamed:@"立即登录.jpg"];
        // 高亮状态
        [button setImage:image1 forState:UIControlStateHighlighted]; // 会和文本抢地盘 ,二选一,要么添加图片,要么添加文本
        // 正常状态
        [button setImage:image2 forState:UIControlStateNormal];
        */
       
        //! button关联事件
        // 1. target : button指定的响应对象
        // 2. action : 指定的响应对象调用的方法
        // 3. events : 事件的触发时机
        [button addTarget:self action:@selector(handleAction:) forControlEvents:UIControlEventTouchUpInside];
       
       
        // 3. 添加到父视图上
        [contentView addSubview:button];
    #pragma mark - 实现button的点击事件方法  button关联事件
    - (void)handleAction:(UIButton *)button { // 自动传进来参数
       
        NSLog(@"鼓掌");
       
        //! 取出某个状态下的button标题 VIP
       
         NSString *title = [button titleForState:UIControlStateNormal];
         // 添加关联事件
        
         if ([title isEqualToString:@"登录"]) {
        
         [button setTitle:@"下线" forState:UIControlStateNormal];
        
         }else if ([title isEqualToString:@"下线"]) {
            
             [button setTitle:@"登录" forState:UIControlStateNormal];
         }
       
       
    }

     Practice:
     
     
  • 相关阅读:
    codeforces 455B A Lot of Games(博弈,字典树)
    HDU 4825 Xor Sum(二进制的字典树,数组模拟)
    hdu 1800 Flying to the Mars(简单模拟,string,字符串)
    codeforces 425A Sereja and Swaps(模拟,vector,枚举区间)
    codeforces 425B Sereja and Table(状态压缩,也可以数组模拟)
    HDU 4148 Length of S(n)(字符串)
    codeforces 439D Devu and Partitioning of the Array(有深度的模拟)
    浅谈sass
    京东楼层案例思维逻辑分析
    浅谈localStorage和sessionStorage
  • 原文地址:https://www.cnblogs.com/yunji5566/p/5022448.html
Copyright © 2011-2022 走看看