前言
開(kāi)始之前茅坛,請(qǐng)?jiān)试S我發(fā)個(gè)牢騷。設(shè)置UISegmentedControl的背景圖片则拷,真是把我折騰的夠嗆的贡蓖。無(wú)論怎么設(shè)置都是無(wú)法達(dá)到要求。在網(wǎng)查查來(lái)查去都是一堆一樣的回答煌茬,真心感到絕望斥铺。后來(lái)自己倒騰出了一種做法,看下面坛善。
效果圖
公司UI給我的素材有兩張晾蜘,分別如下:
seg_leftSelected@3x.png
seg_rightSelected@3x.png
公司要求達(dá)到的效果,如下圖
左邊選中效果圖.png
可我設(shè)置完之后的界面是醬紫的浑吟,如下圖
左邊選中實(shí)際圖.png
我勒個(gè)乖乖笙纤,就是這個(gè)問(wèn)題,我估摸著研究這玩意的時(shí)間全部加加在一起應(yīng)該有24小時(shí)了吧组力。我當(dāng)時(shí)的關(guān)鍵代碼如下省容,大家隨便看看就好。
//viewDidLoad方法里面的代碼
// 設(shè)置中間分隔線的顏色燎字,這還不是很重點(diǎn)
_segmentedControl.tintColor = RGB_COLOR(@"#1A9FF7");
// 監(jiān)聽(tīng)segment值改變腥椒,這也不是重點(diǎn),只是跟下面有點(diǎn)關(guān)聯(lián)
[_segmentedControl addTarget:self action:@selector(segmentAction:) forControlEvents:UIControlEventValueChanged];
//================================================================
// segmentAction:方法里面的代碼候衍。
// 重點(diǎn)來(lái)了
- (void)segmentAction:(UISegmentedControl *)segmentControl {
// 這里寫(xiě)其他需要業(yè)務(wù)代碼
if (segmentControl.selectedSegmentIndex == 0) {
[_segmentedControl setBackgroundImage:[UIImage imageNamed:@"seg_leftSelected"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}else {
[_segmentedControl setBackgroundImage:[UIImage imageNamed:@"seg_rightSelected"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
}
幾經(jīng)波折笼蛛,后來(lái)我的代碼的醬紫的,如下:
// viewDidLoad方法里面的代碼沒(méi)變蛉鹿,略滨砍。
// segmentAction:方法里面的代碼
- (void)segmentAction:(UISegmentedControl *)segmentControl {
// 這里寫(xiě)其他需要業(yè)務(wù)代碼
if (segmentControl.selectedSegmentIndex == 0) {
[_segmentedControl setBackgroundImage:[UIImage imageNamed:@"seg_leftSelected"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}else {
[_segmentedControl setBackgroundImage:[UIImage imageNamed:@"seg_rightSelected"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}
// 意思就是不選中UISegmentedControl的任何一個(gè)segment
segmentControl.selectedSegmentIndex = -1;
}
運(yùn)行之后效果如下圖
運(yùn)行之后的效果.png
怎么樣,是不是跟效果圖一模一樣,大功告成了惋戏。
總結(jié):其實(shí)就是在segmentAction:
方法里面的最后面加上一行代碼segmentControl.selectedSegmentIndex = -1;
即可领追。這行代碼就是重點(diǎn)了。注意响逢,這行代碼必須放在該方法的最后面哦绒窑。
結(jié)尾
如果你有更好的解決方法,不妨在下面留言分享一下哦舔亭,大家共勉之些膨。另外如果你對(duì)這篇文章存在什么疑問(wèn),也可以給我留言哦钦铺!