button的创建方法有:
//对象方法初始化 UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 50, 100, 75)]; //类方法初始化 UIButton *btn1 = [UIButton buttonWithType:UIButtonTypeRoundedRect]; //设置frame btn1.frame = CGRectMake(100, 100, 100, 75); btn1.backgroundColor = [UIColor blackColor];//设置背景颜色 [btn1 setTitle:@"btn1" forState:UIControlStateNormal]; [self.view addSubview:btn];//添加到view上 [self.view addSubview:btn1]; //设置按钮标题 [btn setTitle:@"button" forState:UIControlStateNormal]; //设置高亮状态 [btn setTitle:@"高亮状态" forState:UIControlStateHighlighted]; //按钮的某一个状态设置为图片 [btn setImage:[UIImage imageNamed:@"pic"] forState:UIControlStateNormal]; //设置标题颜色 [btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; //阴影 [btn setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal]; //设置背景图片 [btn setBackgroundImage:[UIImage imageNamed:@"pic"] forState:UIControlStateHighlighted]; //设置字体大小 btn.titleLabel.font = [UIFont fontWithName:@"btn" size:15]; //设置tag值 [btn setTag:101]; //设置四个圆角半径 btn.layer.cornerRadius = 4.5; //按钮边框宽度 btn.layer.borderWidth = 0.5;
state状态
state状态 forState: 这个参数的作用是定义按钮的文字或图片在何种状态下才会显现 enum { UIControlStateNormal = 0, 常规状态显现 UIControlStateHighlighted = 1 << 0, 高亮状态显现 UIControlStateDisabled = 1 << 1, 禁用的状态才会显现 UIControlStateSelected = 1 << 2, 选中状态 UIControlStateApplication = 0x00FF0000, 当应用程序标志时 UIControlStateReserved = 0xFF000000 为内部框架预留,可以不管他 };
//当按钮高亮或者禁用,UIButton 类可以调整自己的外观,下面几个属性可以让你按照需要对按钮的外观进行微调: //adjustsImageWhenHighlighted //默认情况下,在按钮被禁用时,图像会被画的颜色深一些。要禁用此功能,请将这个属性设置为NO: btn1.adjustsImageWhenHighlighted = NO; // adjustsImageWhenDisabled //默认情况下,按钮在被禁用时,图像会被画的颜色淡一些。要禁用此功能,请将这个属性设置为NO: btn1.adjustsImageWhenDisabled = NO; // showsTouchWhenHighlighted // 这个属性设置为YES,可令按钮在按下时发光。这可以用于信息按钮或者有些重要的按钮: btn1.showsTouchWhenHighlighted = YES;
重写绘制
// 重写绘制行为// // 你可以通过子类化按钮来定制属于你自己的按钮类。在子类化的时候你可以重载下面这些方法,这些方法返回CGRect结构,指明了按钮每一组成部分的边界。// 注意:不要直接调用这些方法, 这些方法是你写给系统调用的。 // backgroundRectForBounds //指定背景边界// contentRectForBounds // 指定内容边界// titleRectForContentRect // 指定文字标题边界// imageRectForContentRect //指定按钮图像边界
- (CGRect)imageRectForContentRect:(CGRect)bounds{ return CGRectMake(0.0, 0.0, 44, 44);}[btn1 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];//添加点击按钮事件-(void)btnPressed:(id)sender{ UIButton* btn = (UIButton*)sender; //开始写你自己的动作}
//forControlEvents参数类型 typedef NS_OPTIONS(NSUInteger, UIControlEvents) { UIControlEventTouchDown = 1 << 0, // 单点触摸按下事件:用户点触屏幕,或者又有新手指落下的时候。 UIControlEventTouchDownRepeat = 1 << 1, // 多点触摸按下事件,点触计数大于1:用户按下第二、三、或第四根手指的时候。 UIControlEventTouchDragInside = 1 << 2, // 当一次触摸在控件窗口内拖动时。 UIControlEventTouchDragOutside = 1 << 3, // 当一次触摸在控件窗口之外拖动时。 UIControlEventTouchDragEnter = 1 << 4, // 当一次触摸从控件窗口之外拖动到内部时 UIControlEventTouchDragExit = 1 << 5, // 当一次触摸从控件窗口内部拖动到外部时。 UIControlEventTouchUpInside = 1 << 6, // 所有在控件之内触摸抬起事件 UIControlEventTouchUpOutside = 1 << 7, // 所有在控件之外触摸抬起事件(点触必须开始与控件内部才会发送通知)。 UIControlEventTouchCancel = 1 << 8, //所有触摸取消事件,即一次触摸因为放上了太多手指而被取消,或者被上锁或者电话呼叫打断。 UIControlEventValueChanged = 1 << 12, // 当控件的值发生改变时,发送通知。用于滑块、分段控件、以及其他取值的控件。你可以配置滑块控件何时发送通知,在滑块被放下时发送,或者在被拖动时发送。 UIControlEventEditingDidBegin = 1 << 16, // 当文本控件中开始编辑时发送通知 UIControlEventEditingChanged = 1 << 17, // 当文本控件中的文本被改变时发送通知。 UIControlEventEditingDidEnd = 1 << 18, // 当文本控件中编辑结束时发送通知。 UIControlEventEditingDidEndOnExit = 1 << 19, // 当文本控件内通过按下回车键(或等价行为)结束编辑时,发送通知。 UIControlEventAllTouchEvents = 0x00000FFF, // 通知所有触摸事件。 UIControlEventAllEditingEvents = 0x000F0000, // 通知所有关于文本编辑的事件。 UIControlEventApplicationReserved = 0x0F000000, // range available for application use UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use UIControlEventAllEvents = 0xFFFFFFFF // 通知所有事件