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; } }
浙公网安备 33010602011771号