button的状态
在对UIButton 的使用中,遇到过类似问题。
- XIB布局中,button 的点击有莫名的蓝色效果
- 纯代码创建button时,没有默认长按效果
- 想禁止button默认的长按效果
- 你的button在你设置的默认效果和选中效果之间切换时,中间状态是系统默认的长按效果
首先 button type 有7种,不一一罗列。我认为主要的类型只有两种,UIButtonTypeCustom和UIButtonTypeSystem
-
UIbutton按钮,如果设置的有图片的话,都会默认有长按效果。
-
XIB中,默认拖动的UIbutton是system类型。具有默认的长按效果。你可以设置为custom类型,消除长按效果
-
如果纯代码创建button且没有图片,则需要如下,方可出现系统自带的默认长按效果
UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
-
图片设置后当点击之后在normal和select之间有个过渡效果。及是normal状态下的图片的长按效果,松手后才会变成选中的图片。且从select到normal中间也有会出现图片的长按效果。
正常 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 80)]; [button setImage:[UIImage imageNamed:@"word_star_empty"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"word_star_filled"] forState:UIControlStateSelected]; [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; 消除normal -> select中间的长按效果 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 80)]; [button setImage:[UIImage imageNamed:@"word_star_empty"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"word_star_empty"] forState: UIControlStateHighlighted]; [button setImage:[UIImage imageNamed:@"word_star_filled"] forState:UIControlStateSelected]; [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; 消除从select -> normal之间的状态 UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(20, 20, 80, 80)]; [button setImage:[UIImage imageNamed:@"word_star_empty"] forState:UIControlStateNormal]; [button setImage:[UIImage imageNamed:@"word_star_empty"] forState: UIControlStateHighlighted]; [button setImage:[UIImage imageNamed:@"word_star_filled"] forState:UIControlStateSelected]; [button setImage:[UIImage imageNamed:@"word_star_filled"] forState:UIControlStateSelected | UIControlStateHighlighted]; [button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:button]; 总之很繁琐
-
希望有系统的默认效果,设置为system 类型即可。如果设置有图片且仅仅只要noraml和select状态,则可以仿照第四条。也可以如下设置
自定义一个父类是UIButton的customButton。在自定义的类的.m文件中重写 // 当然你不需要在方法里面做任何事情,这表示我们阻止了系统按钮默认的做法,屏蔽了它的一些默认效果 - (void)setHighlighted:(BOOL)highlighted { } 如上设置即可
网友评论