UILable、UIImageView、UIButton的拓展:
三个控件,当显示文字时,使用UILable,当显示图片时,使用UIImageView,当带有点击事件时,使用UIButton。对于UIButton的拓展,需要知道:
[button setTitle:@"我是按钮" forState:UIControlStateNormal];//设置button的文字
[button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];//设置button的文字颜色
上面的代码,已经介绍了,现在,拓展一下按钮控件UIButton的状态(state):
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)
UIControlStateFocused NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 3, // Applicable only when the screen supports focus
UIControlStateApplication = 0x00FF0000, // additional flags available for application use
UIControlStateReserved = 0xFF000000 // flags reserved for internal framework use
};
代码练习:
@interface ViewController ()
{
UIButton *_buttonStateNormal;//声明一个变量,该类的全局变量 _buttonStateNormal
UIButton *_buttonStateHighlighted;//声明一个变量,该类的全局变量_buttonStateHighlighted
UIButton *_buttonStateSelected ;//声明一个变量,该类的全局变量_buttonStateSelected
UIButton *_buttonStateDisabled;//声明一个变量,该类的全局变量_buttonStateDisabled
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_buttonStateNormal = [UIButton buttonWithType:UIButtonTypeCustom];//使用类方法初始化按钮
_buttonStateNormal.frame = CGRectMake(20.0, 20.0, 80.0, 40.0);
_buttonStateNormal.backgroundColor = [UIColor orangeColor];
[_buttonStateNormal setTitle:@"按钮" forState:UIControlStateNormal];
[_buttonStateNormal setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_buttonStateNormal setBackgroundImage:[UIImage imageNamed:@"bg"] forState:UIControlStateNormal];//设置背景图片
[self.view addSubview:_buttonStateNormal];
_buttonStateHighlighted = [UIButton buttonWithType:UIButtonTypeCustom];//使用类方法初始化按钮
_buttonStateHighlighted.frame = CGRectMake(20.0, 70, 80.0, 40.0);
_buttonStateHighlighted.backgroundColor = [UIColor orangeColor];
[_buttonStateHighlighted setTitle:@"按钮" forState:UIControlStateNormal];
[_buttonStateHighlighted setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_buttonStateHighlighted setTitle:@"按钮Highlighted" forState:UIControlStateHighlighted];
[_buttonStateHighlighted setTitleColor:[UIColor greenColor] forState:UIControlStateHighlighted];
[self.view addSubview:_buttonStateHighlighted];
_buttonStateSelected = [UIButton buttonWithType:UIButtonTypeCustom];//使用类方法初始化按钮
_buttonStateSelected.frame = CGRectMake(20.0, 120, 80.0, 40.0);
_buttonStateSelected.backgroundColor = [UIColor orangeColor];
[_buttonStateSelected setTitle:@"按钮" forState:UIControlStateNormal];
[_buttonStateSelected setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_buttonStateSelected setTitle:@"按钮Selected" forState:UIControlStateSelected];
[_buttonStateSelected setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
[_buttonStateSelected addTarget:self action:@selector(buttonSelectedClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_buttonStateSelected];
_buttonStateDisabled = [UIButton buttonWithType:UIButtonTypeCustom];//使用类方法初始化按钮
_buttonStateDisabled.frame = CGRectMake(20.0, 170.0, 80.0, 40.0);
_buttonStateDisabled.backgroundColor = [UIColor orangeColor];
[_buttonStateDisabled setTitle:@"按钮" forState:UIControlStateNormal];
[_buttonStateDisabled setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
[_buttonStateDisabled setTitle:@"按钮Disabled" forState:UIControlStateDisabled];
[_buttonStateDisabled setTitleColor:[UIColor greenColor] forState:UIControlStateDisabled];
[_buttonStateDisabled addTarget:self action:@selector(buttonDisableClick:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:_buttonStateDisabled];
// Do any additional setup after loading the view, typically from a nib.
}
-(void)buttonSelectedClick:(UIButton *)sender {
sender.selected = !sender.selected;
}
-(void)buttonDisableClick:(UIButton *)sender{
[sender setEnabled:NO];//设置为不可点击UIControlStateDisabled
}
@end
运行效果:(以及点击后效果)
屏幕快照 2018-07-19 下午2.48.22.png 屏幕快照 2018-07-19 下午2.48.34.png
UIButton的响应事件event(事件):
代码:
[_buttonStateSelected addTarget:self action:@selector(buttonSelectedClick:) forControlEvents:UIControlEventTouchUpInside];
event的几种枚举:
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.
UIControlEventPrimaryActionTriggered NS_ENUM_AVAILABLE_IOS(9_0) = 1 << 13, // semantic action: for buttons, 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
};
网友评论