??我們在寫注冊界面時,寫注冊和密碼找回按鈕時,且注冊和密碼找回按鈕在一起時,如下圖所示:

Simulator Screen Shot 2017年5月30日 上午10.43.06.png
??我們常常需要兩個按鈕來實現(xiàn),但是,這樣適配起來就不方便了,控件越多越不好適配,所以最好用一個控件來完成這個效果。
??分段控制器UISegmentedControl可以實現(xiàn)該效果,代碼如下:
UISegmentedControl *SCtrl = [[UISegmentedControl alloc] initWithItems:@[@"注冊",@"找回密碼"]];// 設(shè)置分段標(biāo)題
SCtrl.frame = CGRectMake(CGRectGetWidth(self.view.frame)/3, CGRectGetHeight(self.view.frame) - 40, CGRectGetWidth(self.view.frame)/3 , 20);// 設(shè)置分段控制器的位置和大小
SCtrl.tintColor = [UIColor clearColor];// 將分段控制器的tintColor(包括邊框,分段間隔,等等設(shè)置為無色)
[SCtrl setDividerImage:[UIImage imageNamed:@"line"] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];// 設(shè)置標(biāo)簽之間分隔線圖案(讓設(shè)計給個中間的豎線圖)
[SCtrl setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor colorWithRed:163/255.f green:163/255.f blue:163/255.f alpha:1], NSFontAttributeName:[UIFont systemFontOfSize:16.0]} forState:UIControlStateNormal];// 設(shè)置標(biāo)題顏色和字號等等
SCtrl.apportionsSegmentWidthsByContent = YES;// 根據(jù)內(nèi)容定制寬度(根據(jù)標(biāo)題內(nèi)容自設(shè)分段寬度)
[SCtrl addTarget:self action:@selector(change:) forControlEvents:UIControlEventValueChanged];// 添加點擊事件,點擊事件為UIControlEventValueChanged,不是UIControlEventTouchUpInside,否則會無效,這里要注意
SCtrl.momentary = YES;// 點擊后恢復(fù)原狀態(tài)(默認(rèn)是NO,為NO時,某個分段點擊后就會一直處于選中狀態(tài),在點擊這個分段就會沒有效果,設(shè)置為YES后,點擊后不會處于選中狀態(tài),一個分段可以聯(lián)系點擊)
[self.view addSubview:SCtrl];
#pragma mark- 分段控制器點擊事件
- (void)change:(UISegmentedControl *)sender {
if (sender.selectedSegmentIndex == 0) {
NSLog(@"彈出注冊界面");
}else if (sender.selectedSegmentIndex == 1) {
NSLog(@"彈出密碼找回界面");
}
}
??該段代碼可以實現(xiàn)如上圖所示效果,這樣一個控件就可以實現(xiàn)注冊/密碼找回效果,且適配時只需適配分段控制器。
參考
1.iOS-UIKit框架學(xué)習(xí)—UISegmentedControl
2.UISegmentedControl屬性
3.iOS開發(fā)之分段控制器
??不知道大家有沒有更好的方法來實現(xiàn)這個效果……歡迎留言