UISegmentControl的弊端---用UIButton代替

笔者在使用UISegmentControl时,发现这个控件有些许bug.最突出的问题是设置背景图。

如果不涉及到背景图,勉强够用。一旦涉及到设置背景图。基本就无法正常显示,只能看到一片模糊的蓝色[tintColor的颜色]

如果当我们的segment个数不太多,我们可以多个UIButton模拟构造它。

注意初始化的时候设置UIButton的风格是custom而不是system

我们需要UI 帮我们设置4张图。每个UIButton需要两张图片。一张是normal状态,一张是selected状态

代码如下

  self.manButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.manButton setImage:[UIImage imageNamed:@"zhuce_d_nan"] forState:UIControlStateNormal];
    [self.manButton  setImage:[UIImage imageNamed:@"zhuce_d_nan_an"] forState:UIControlStateSelected];
    self.manButton.frame = CGRectMake(18, 197, 141, 54);
    [self.manButton addTarget:self action:@selector(buttonDidPressed:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:self.manButton];

    self.womanButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.womanButton setImage:[UIImage imageNamed:@"zhuce_d_nv"] forState:UIControlStateNormal];
    [self.womanButton setImage:[UIImage imageNamed:@"zhuce_d_nv_an"] forState:UIControlStateSelected];
    [self.womanButton addTarget:self action:@selector(buttonDidPressed:)  forControlEvents:UIControlEventTouchUpInside];
    self.manButton.selected = YES;
    self.womanButton.selected = NO;
    self.womanButton.frame = CGRectMake(160, 197, 141, 54);
    [self.view addSubview:self.womanButton];

 

 

模拟选择

- (void)buttonDidPressed:(id) sender
{
    if(sender == self.womanButton)
    {
        self.manButton.selected = NO;
        self.womanButton.selected = YES;
    }
    else
    {
        self.womanButton.selected = NO;
        self.manButton.selected = YES;
    }
}

 

posted on 2014-01-07 14:44  mix1009  阅读(263)  评论(0)    收藏  举报

导航