各位童鞋们, UIButton是iOS中常用的控件,下面来详细介绍它的使用方法和以及开发中需要注意的问题.
UIButton (按钮)
- UIButton的创建, 系统提供了构造器方法, 代码如下:
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem - 其中buttonWithType(button的类型):后是枚举类型, 总共有六种类型, 如下所示:
typedef enum {
UIButtonTypeCustom = 0, 自定义风格
UIButtonTypeSystem, 系统的风格
UIButtonTypeRoundedRect, 圆角矩形
UIButtonTypeDetailDisclosure, 蓝色小箭头按钮,主要做详细说明用
UIButtonTypeInfoLight, 亮色感叹号
UIButtonTypeInfoDark, 暗色感叹号
UIButtonTypeContactAdd, 十字加号按钮
} UIButtonType;
- 设置button的frame(必须设置, 否则无法显示按钮)
button.frame = CGRectMake(20, 20, 100, 50);
[button setFrame:CGRectMake(20,20,100,50)]
// 上面两种等效, 用其中一种即可 - 设置button的背景颜色
button.backgroundColor = [UIColor cyanColor];
[button setBackgroundColor:[UIColor blueColor]];
// 上面两种等效, 用其中一种即可 -
在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下才能设置字体的大小) - forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现
//以下是几种状态
enum {
UIControlStateNormal = 0, 常规状态显现
UIControlStateHighlighted = 1 << 0, 高亮状态显现
UIControlStateDisabled = 1 << 1, 禁用的状态才会显现
UIControlStateSelected = 1 << 2, 选中状态
UIControlStateApplication = 0x00FF0000, 当应用程序标志时
UIControlStateReserved = 0xFF000000 为内部框架预留,可以不去管它
}; - UIButton的点击效果
// 默认情况下,当按钮高亮的情况下,图像的颜色会被画深一点,如果这下面的这个属性设置为NO,就没有这个效果
button1.adjustsImageWhenHighlighted = NO;
// 跟上面的情况一样,默认情况下,当按钮禁用的时候,图像会被画得深一点,设置NO可以取消设置
button1.adjustsImageWhenDisabled = NO;
// 下面的这个属性设置为YES的状态下,按钮按下会发光
button1.showsTouchWhenHighlighted = YES; - 设置button上文字的阴影及阴影颜色,向右向下为正,向左向上为负
button.titleLabel.shadowOffset = CGSizeMake(2, 2);
[button setTitleShadowColor:[UIColor redColor] forState:UIControlStateNormal]; - 给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)]; // 约束图片 - 添加或删除点击事件(点击事件必须实现, 否者会运行崩溃)
// 给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; // 文字居左对齐
显示效果分别为:
- 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按钮的协议方法,我们让键盘消失
初次写微博,写的不好的话请指出, 谢谢!