详细阐述UIButton, UILabel, UITextFie

作者: 我与太阳肩并肩 | 来源:发表于2016-07-16 21:08 被阅读604次

    各位童鞋们, UIButton是iOS中常用的控件,下面来详细介绍它的使用方法和以及开发中需要注意的问题.

    UIButton (按钮)

    • UIButton的创建, 系统提供了构造器方法, 代码如下:
      UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem
    • 其中buttonWithType(button的类型):后是枚举类型, 总共有六种类型, 如下所示:
      typedef enum {
      UIButtonTypeCustom = 0, 自定义风格
      UIButtonTypeSystem, 系统的风格
      UIButtonTypeRoundedRect, 圆角矩形
      UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用
      UIButtonTypeInfoLight, 亮色感叹号
      UIButtonTypeInfoDark, 暗色感叹号
      UIButtonTypeContactAdd, 十字加号按钮
      } UIButtonType;
    1. 设置button的frame(必须设置, 否则无法显示按钮)
      button.frame = CGRectMake(20, 20, 100, 50);
      [button setFrame:CGRectMake(20,20,100,50)]
      // 上面两种等效, 用其中一种即可
    2. 设置button的背景颜色
      button.backgroundColor = [UIColor cyanColor];
      [button setBackgroundColor:[UIColor blueColor]];
      // 上面两种等效, 用其中一种即可
    3. 在button上添加文字和图片(同时添加文字和图片, 文字在右, 图片在左, 如果你想改变这种排序, 就需要自定义UIButton)



      [button setTitle:@"点击" forState:UIControlStateNormal]; // 给button上添加文字
      [button setImage:[UIImage imageNamed:@"Unknown-1.png"] forState:UIControlStateNormal]; // 给button上添加图片
      [button setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; // 设置button上文字的颜色
      [button setTintColor:[UIColor cyanColor]]; // 设置button上元素的颜色
      button.titleLabel.font = [UIFont systemFontOfSize:17]; // 设置button上的字体大小(注意:只能在 UIButtonTypeSystem或者UIButtonTypeCustom下才能设置字体的大小)

    4. forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现
      //以下是几种状态
      enum {
      UIControlStateNormal = 0, 常规状态显现
      UIControlStateHighlighted = 1 << 0, 高亮状态显现
      UIControlStateDisabled = 1 << 1, 禁用的状态才会显现
      UIControlStateSelected = 1 << 2, 选中状态
      UIControlStateApplication = 0x00FF0000, 当应用程序标志时
      UIControlStateReserved = 0xFF000000 为内部框架预留,可以不去管它
      };
    5. UIButton的点击效果
      // 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为NO,就没有这个效果
      button1.adjustsImageWhenHighlighted = NO;
      // 跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置
      button1.adjustsImageWhenDisabled = NO;
      // 下面的这个属性设置为YES的状态下,按钮按下会发光
      button1.showsTouchWhenHighlighted = YES;
    6. 设置button上文字的阴影及阴影颜色,向右向下为正,向左向上为负
      button.titleLabel.shadowOffset = CGSizeMake(2, 2);
      [button setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal];
    7. 给button上的文字或者图片添加约束 UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) 分别是相对于button的边缘 距上, 距左, 距下, 距右 的距离
      [button setTitleEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)]; // 约束文字
      [button setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 5)]; // 约束图片
    8. 添加或删除点击事件(点击事件必须实现, 否者会运行崩溃)
      // 给button添加点击事件
      [button addTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
      // 给button移除点击事件
      [button removeTarget:self action:@selector(clickButton:) forControlEvents:UIControlEventTouchUpInside];
    • UIButton的点击事件
      UIControlEventTouchDown // 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。
      UIControlEventTouchDownRepeat // 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。
      UIControlEventTouchDragInside // 当一次触摸在控件窗口内拖动时。
      UIControlEventTouchDragOutside // 当一次触摸在控件窗口之外拖动时。
      UIControlEventTouchDragEnter // 当一次触摸从控件窗口之外拖动到内部时。
      UIControlEventTouchDragExit // 当一次触摸从控件窗口内部拖动到外部时。
      UIControlEventTouchUpInside // 所有在控件之内触摸抬起事件。
      UIControlEventTouchUpOutside // 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。
      UIControlEventTouchCancel // 所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。
      UIControlEventTouchChanged // 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。
      UIControlEventEditingDidBegin // 当文本控件中开始编辑时发送通知。
      UIControlEventEditingChanged // 当文本控件中的文本被改变时发送通知。
      UIControlEventEditingDidEnd // 当文本控件中编辑结束时发送通知。
      UIControlEventEditingDidOnExit // 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。
      UIControlEventAlltouchEvents // 通知所有触摸事件。
      UIControlEventAllEditingEvents // 通知所有关于文本编辑的事件。
      UIControlEventAllEvents // 通知所有事件。
    • 设置UIButton的圆角, 边框颜色, 边框线宽
      // 设置button的透明度
      button.alpha = 0.50f;
      // 设置button的圆角大小
      button.layer.cornerRadius = 5;
      // 设置边框线宽
      button.layer.borderWidth = 3;
      // 设置边框线的颜色
      button.layer.borderColor = [UIColor redColor].CGColor;
    • 设置UIButton上的字体大小, 和button上图片的渲染
      // 改变button上的字体大小
      button.titleLabel.font = [UIFont systemFontOfSize:20];
      // 给图片加渲染, 显示图片原图效果
      [button setImage:[[UIImage imageNamed:@"Unknown.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forState:UIControlStateNormal];

    下面我们介绍一下UILabel的使用方法和注意事项!

    UILabel

    • UILabel的创建
      // UILabel初始化方法创建, 并赋予frame
      UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 200, 200, 50)];
      // 给label赋予一个背景颜色
      label.backgroundColor = [UIColor cyanColor];
      // 给label的文本内容赋予一个颜色
      label.textColor = [UIColor redColor];
      // 向label里添加一段文本
      label.text = @"添加了一段话";
      [self.view addSubview:label];
      以上代码的显示效果为:


    • label的文本对齐方式
      label.textAlignment = NSTextAlignmentCenter; // 文字居中对齐
      label.textAlignment = NSTextAlignmentRight; // 文字居右对齐
      label.textAlignment = NSTextAlignmentLeft; // 文字居左对齐
      显示效果分别为:


      文字居中对齐
      文字居右对齐 ![文字居左对齐](https://img.haomeiwen.com/i2486678/cea26bd30b25f8e2.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
    • label的文字属性(大小, 粗细, 颜色)
      // 设置字体的大小(默认是17)
      label.font = [UIFont systemFontOfSize:15];
      // 设置字体的粗细
      label.font = [UIFont boldSystemFontOfSize:15];
      // 设置字体的型号(比如宋体, 黑体等)以及字体的大小
      label.font = [UIFont fontWithName:@"AppleGothic" size:15];
    • 设置字体大小是否适应label宽度
      label.adjustsFontSizeToFitWidth = YES;
    • 设置文本是否高亮和高亮时的颜色
      label.highlighted = YES;
      label.highlightedTextColor = [UIColor redColor];
    • 设置是否能与用户进行交互
      label.userInteractionEnabled = YES;
    • 设置label中的文字是否可变,默认值是YES
      // /只是决定了Label的绘制方式,将它设置为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。
      label.enabled = NO;
    • 设置label的行数, 当为0时, 没有行数限制
      label.numberOfLines = 2;
    • 设置阴影的颜色和阴影的偏移量
      label.shadowColor = [UIColor blackColor];
      label.shadowOffset = CGSizeMake(2.0,1.0);
    • 设置当文字过长时文本的显示格式
      label.lineBreakMode = UILineBreakModeMiddleTruncation;//截去中间
      // 这是一个枚举值,枚举内容为:
      typedef enum {
      UILineBreakModeWordWrap = 0, // 以空格为边界,保留整个单词
      UILineBreakModeCharacterWrap, // 保留整个字符
      UILineBreakModeClip, // 到边界为止, 截去多余部分
      UILineBreakModeHeadTruncation, // 截去头部, 以……代替
      UILineBreakModeTailTruncation, // 截去尾部, 以……代替
      UILineBreakModeMiddleTruncation, // 截去中间, 以……代替
      } UILineBreakMode;
    • 文本的基线
      //baselineAdjustment这个值控制文本的基线位置,只有文本行数为1时有效
      label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
      //是枚举值, 有三种方式
      typedef enum {
      UIBaselineAdjustmentAlignBaselines = 0, // 默认值文本最上端于label中线对齐
      UIBaselineAdjustmentAlignCenters,//文本中线于label中线对齐
      UIBaselineAdjustmentNone,//文本最低端与label中线对齐
      } UIBaselineAdjustment;
    • 去掉label背景色
      label.backgroundColor = [UIColor clearColor];
    • 设置最小收缩比例,如果Label宽度小于文字长度时,文字进行收缩,收缩超过比例后,停止收缩。
      label.minimumScaleFactor = 0.5;
    • Label添加边框
      titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];
      titleLabel.layer.borderWidth = 2;

    下面我们介绍一下UITextField的使用方法和注意事项!

    UITextField

    • 创建一个textField
      UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(50, 200, 200, 50)];
    • 设置UITextField的文字颜色
      textField.textColor = [UIColor redColor];
    • 设置UITextField的背景颜色
      textField.backgroundColor = [UIColor grayColor];
    • 设置UITextField的文字大小和字体
      textField.font = [UIFont fontWithName:@"Times New Roman" size:20];
    • 设置UITextField自适应文本框大小
      textField.adjustsFontSizeToFitWidth = YES;//自适应宽度
    • 设置UITextField是否拥有一键清除的功能
      textField.clearsOnBeginEditing = YES;
    • 设置是否密文输入
      textField.secureTextEntry = YES;
    • 设置一键清除按钮是否出现
      textField.clearButtonMode = UITextFieldViewModeNever;
    • 是否允许再次编辑时在内容中间插入内容
      textField.clearsOnInsertion = YES;
    • 当UITextField的样式为UITextBorderStyleNone的时候,修改背景图片
      textField.background = [UIImage imageNamed:@"Unknown-1.png"];
    • 设置UITextField的左边view(右边同理)
      UIImageView *view = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Unknown-1.png"]];
      textField.leftView = view;
      textField.leftViewMode = UITextFieldViewModeAlways;
      // leftViewMode 是一个枚举(如下)
      typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
      //从不显示
      UITextFieldViewModeNever,
      //编辑的时候显示
      UITextFieldViewModeWhileEditing,
      //非编辑的时候显示
      UITextFieldViewModeUnlessEditing,
      //任何时候都显示
      UITextFieldViewModeAlways
      };
    • 设置UITextField的初始占位文字(当输入文字后消失)以及改变占位符的字体大小和颜色
      textField.placeholder = @"输入密码";
      // 设置placeholder字体的大小和颜色
      [textField setValue:[UIColor lightGrayColor] forKeyPath:@"_placeholderLabel.textColor"];
      [textField setValue:[UIFont boldSystemFontOfSize:20] forKeyPath:@"_placeholderLabel.font"];
    • 设置UITextField的字的摆设方式
      textField.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
    • 设置UITextField的边框的风格
      textField.borderStyle = UITextBorderStyleRoundedRect;
    • 设置UITextField的代理
      textField.delegate = self;
    • 协议方法
      //- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
      //点击输入框时触发的方法,返回YES则可以进入编辑状态,NO则不能。
      //- (void)textFieldDidBeginEditing:(UITextField *)textField;
      //开始编辑时调用的方法
      //- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;
      //将要结束编辑时调用的方法,返回YES则可以结束编辑状态,NO则不能
      //- (void)textFieldDidEndEditing:(UITextField *)textField;
      //结束编辑调用的方法
      //- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
      //输入字符时调用的方法
      //- (BOOL)textFieldShouldClear:(UITextField *)textField;
      //点击清除按钮时调用的函数,返回YES则可以清除,返回NO则不能清除
      - (BOOL)textFieldShouldReturn:(UITextField *)textField{
      [textField resignFirstResponder];
      return YES;
      }
      //按下return按钮的协议方法,我们让键盘消失

    初次写微博,写的不好的话请指出, 谢谢!

    相关文章

      网友评论

        本文标题:详细阐述UIButton, UILabel, UITextFie

        本文链接:https://www.haomeiwen.com/subject/bksujttx.html