【问题标题】:Simulating UISegmentedControl with 2 UIButtons使用 2 个 UIButton 模拟 UISegmentedControl
【发布时间】:2015-01-07 09:36:54
【问题描述】:

我想要两个自定义按钮来模拟 UISegmentedControl 的行为方式(切换按钮文本颜色和图像)

这是我目前所拥有的:

    - (IBAction)byDateTapped:(UIButton *)sender {

    UIColor *darkColor = [UIColor colorWithRed:52/255 green:91/255 blue:120/255 alpha:1.0];
    UIColor *lightColor = [UIColor colorWithRed:158/255 green:200/255 blue:217/255 alpha:1.0];

    self.byDateView.hidden = NO;
    [self.byDateButton setBackgroundImage:[UIImage imageNamed:@"radioOn"] forState:UIControlStateNormal];
    [self.byDateButton setTitleColor:darkColor forState:UIControlStateNormal];
    [self.byDateButton setTitleColor:darkColor forState:UIControlStateHighlighted];

    self.byCategoryView.hidden = YES;
    [self.byCategoryButton setBackgroundImage:[UIImage imageNamed:@"radioOff"]forState:UIControlStateNormal];
    [self.byCategoryButton setTitleColor:lightColor forState:UIControlStateNormal];
    [self.byCategoryButton setTitleColor:lightColor forState:UIControlStateHighlighted];

}

- (IBAction)byCategoryTapped:(UIButton *)sender {

    UIColor *darkColor = [UIColor colorWithRed:52/255 green:91/255 blue:120/255 alpha:1.0];
    UIColor *lightColor = [UIColor colorWithRed:158/255 green:200/255 blue:217/255 alpha:1.0];

    self.byDateView.hidden = YES;
    [self.byDateButton setBackgroundImage:[UIImage imageNamed:@"radioOff"] forState:UIControlStateNormal];
    [self.byDateButton setTitleColor:lightColor forState:UIControlStateNormal];
    [self.byDateButton setTitleColor:lightColor forState:UIControlStateHighlighted];

    self.byCategoryView.hidden = NO;
    [self.byCategoryButton setBackgroundImage:[UIImage imageNamed:@"radioOn"]forState:UIControlStateNormal];
    [self.byCategoryButton setTitleColor:darkColor forState:UIControlStateNormal];
    [self.byCategoryButton setTitleColor:darkColor forState:UIControlStateHighlighted];

}

我似乎无法开始工作的唯一一件事是更改按钮文本颜色。任何想法为什么?

【问题讨论】:

    标签: ios objective-c uibutton uisegmentedcontrol


    【解决方案1】:

    您的 IBAction 方法应该像

    一样简单

    - (IBAction)byDateTapped:(UIButton *)sender {

    [self.byDateButton setSelected:YES];
    [self.byCategoryButton setSelected:NO];
    
    }
    

    - (IBAction)byCategoryTapped:(UIButton *)sender {

    [self.byDateButton setSelected:NO];
    [self.byCategoryButton setSelected:YES];
    
    }
    

    您应该对初始化代码 (viewDidLoad) 上的所有状态进行所有设置。

    您应该使用UIControlStateSelected 而不是UIControlStateHighlighted。仅供参考,您也可以对背景图像执行相同的操作。

    例如:

    [_byDateButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [_byDateButton setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
    [_byCategoryButton setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [_byCategoryButton setTitleColor:[UIColor greenColor] forState:UIControlStateSelected];
    

    【讨论】:

      猜你喜欢
      • 2011-02-11
      • 1970-01-01
      • 2010-11-26
      • 1970-01-01
      • 2010-10-04
      • 1970-01-01
      • 2014-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多