美文网首页
button Type

button Type

作者: 小朴同学 | 来源:发表于2019-02-17 17:18 被阅读0次

button的状态

在对UIButton 的使用中,遇到过类似问题。

  • XIB布局中,button 的点击有莫名的蓝色效果
  • 纯代码创建button时,没有默认长按效果
  • 想禁止button默认的长按效果
  • 你的button在你设置的默认效果和选中效果之间切换时,中间状态是系统默认的长按效果
首先 button type 有7种,不一一罗列。我认为主要的类型只有两种,UIButtonTypeCustom和UIButtonTypeSystem
  1. UIbutton按钮,如果设置的有图片的话,都会默认有长按效果。

  2. XIB中,默认拖动的UIbutton是system类型。具有默认的长按效果。你可以设置为custom类型,消除长按效果

  3. 如果纯代码创建button且没有图片,则需要如下,方可出现系统自带的默认长按效果

    UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem];
    
  4. 图片设置后当点击之后在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];
    总之很繁琐
    
  5. 希望有系统的默认效果,设置为system 类型即可。如果设置有图片且仅仅只要noraml和select状态,则可以仿照第四条。也可以如下设置

    自定义一个父类是UIButton的customButton。在自定义的类的.m文件中重写
    // 当然你不需要在方法里面做任何事情,这表示我们阻止了系统按钮默认的做法,屏蔽了它的一些默认效果
    - (void)setHighlighted:(BOOL)highlighted {
    
    }
    如上设置即可
    

    参考资料如下: http://www.jianshu.com/p/57b2c41448bf

相关文章

网友评论

      本文标题:button Type

      本文链接:https://www.haomeiwen.com/subject/lnogeqtx.html