第二篇文章来学习UIButton,这是一个我们最常用的控件之一,可往往最常用的却还有很多不了解的东西,苹果也为这个控件设计了很多有意思的东西。
首先还是,storyboard属性:
- Type:Custom:自定义风格(无边框的那种);system:圆角矩形(系统的那种);DetailDisclosure:蓝色小箭头按钮,主要做详细说明用(ios7上变成一个亮的蓝色感叹号);InfoLight:亮色感叹号;InfoDark:暗色感叹号;ContactAdd:十字加号按钮;
- State Config:Default:常规状态显现;Highlighted:高亮状态显现;Selected:选中状态;Disabled:禁用的状态才会显现.
- Title:plain常规的。attributed属性可以更改一个label文字中不同的颜色。
- font:改变文字字体和文字大小;
- Text Color:改变字体颜色;
- Shadow Color:阴影颜色;
- Image:摁钮图片显示;
- Background:背景图片;
- Shadow Offset:阴影大小;
- Drawing:Reverse On Highlight:阴影在雕刻和浮雕外观之间翻转,默认为NO(翻译不准确,原文:default is NO. if YES, shadow reverses to shift between engrave and emboss appearance);Shows Touch On Highlight:下面的这个属性设置为yes的状态下,按钮按下会发光,默认为NO;HighlightedAdjusts Image:当按钮高亮的情况下,图像的颜色会被画深一点,默认为YES。Disabled Adjusts Image:当按钮禁用的情况下,图像的颜色会被画深一点,默认为YES。
- line breaks:文字剪裁方式。Clip:简单剪裁,到边界为止;CharWrapping:保留整个字符;WordWrapping:以空格为边界,保留单词;TruncatingHead:按照"......文字"显示;TruncatingTail:按照"文字......文字"显示;TruncatingMiddle:按照"文字......"显示.
- Edge:这个是设置摁钮上的文字或者图片在摁钮上的相对位置的。可以一起设置,也可以分别选择Image和Title,分别设置。下面是Inset是设置的坐标。成型之后可以设置成这个样子的。可以图片上即存在图标又存在文字,这样比用整体贴图要好。
- Control:Alignment:设置对齐位置默认都是居中;
- Content:当前摁钮的状态:selected:选中;Enable:是否正在启用;Highlight:是否高亮;
- View:这是摁钮下面的一个自带的view的属性。设置这个同时也就设置了这个Button。如设置了这个Alpha或者Hidden,或者设这tag也就是设置这个Button。
代码
1.创建一个圆角矩形的按钮
UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];
2.button类型有以下6种,
typedef NS_ENUM(NSInteger, UIButtonType) {
UIButtonTypeCustom = 0, // no button type
UIButtonTypeSystem NS_ENUM_AVAILABLE_IOS(7_0), // standard system button
UIButtonTypeDetailDisclosure,
UIButtonTypeInfoLight,
UIButtonTypeInfoDark,
UIButtonTypeContactAdd,
UIButtonTypeRoundedRect = UIButtonTypeSystem, // Deprecated, use UIButtonTypeSystem instead
};
3.设置Button的frame:
button1.frame = CGRectMake(100,100,50,50);
4.Button的状态展示:
typedef NS_OPTIONS(NSUInteger, UIControlState) {
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 // flags reserved for internal framework use // 为内部框架预留
};
5.BUTTON每个状态时设置图片
[button1 setImage:[UIImage imageNamed:@"image"] forState:UIControlStateNormal];
6.为Button上面的文字title设置文本:
[button1 setTitle:@"BTN1" forState:UIControlStateNormal];
7.为title设置颜色
[button1 setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
8.为title设置阴影
[button1 setTitleShadowColor:[UIColor grayColor] forState:UIControlStateNormal];
9.设置背景图片
[button1 setBackgroundImage:[UIImage imageNamed:@"PIC"] forState:UIControlStateHighlighted];
10.显示或添加控件
[self.view addSubview:button1];
11.添加动作
[button1 addTarget:self action:@selector(btnPressed:) forControlEvents:UIControlEventTouchUpInside];
-(void)btnPressed:(id)sender{ //sender就是那个按钮本身
UIButton* btn = (UIButton*)sender;
//开始写你自己的动作
}
typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
UIControlEventTouchDown = 1 << 0, // on all touch downs
UIControlEventTouchDownRepeat = 1 << 1, // on multiple touchdowns (tap count > 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, // sliders, etc.
UIControlEventEditingDidBegin = 1 << 16, // UITextField
UIControlEventEditingChanged = 1 << 17,
UIControlEventEditingDidEnd = 1 << 18,
UIControlEventEditingDidEndOnExit = 1 << 19, // 'return key' ending editing
UIControlEventAllTouchEvents = 0x00000FFF, // for touch events
UIControlEventAllEditingEvents = 0x000F0000, // for UITextField
UIControlEventApplicationReserved = 0x0F000000, // range available for application use
UIControlEventSystemReserved = 0xF0000000, // range reserved for internal framework use
UIControlEventAllEvents = 0xFFFFFFFF
};