項目中有個需求在同一個頁面里需要顯示tabbleview和collectionview,這就要用到了 SegmentedControl的分頁顯示了先巴。
先看效果圖:
要用好SegmentedControl责循,需要先了解他的特性及其使用方法畏鼓。
一低零、特性:
1副硅、通常是在單個視圖中使用丙曙,實現(xiàn)視圖中不同 View快速切換爸业。
2、通常位于navbar上或者整個屏幕的上部亏镰,當然也可以在屏幕的其他地方扯旷,應用較少。
3索抓、一般2到4個分割钧忽,超過5個的話每個分割的大小對于用戶觸碰的體驗會很差,且任意時刻逼肯,只有一個分割是激活狀態(tài)的耸黑。
二、使用方法:
這個附在代碼中介紹汉矿。
1崎坊、先在SudoVController.m文件的類擴展里加上tableview和collectionview的Delegate和DataSource(SudoVController繼承自UIViewController)。
@interface SudoVController ()<UITableViewDelegate,UITableViewDataSource,UICollectionViewDelegate,UICollectionViewDataSource>
2洲拇、控件segment奈揍、tableView、collectionView
/** 控件屬性*/
@property (nonatomic,weak)UISegmentedControl *segment;//類別
@property(nonatomic, weak) UITableView *tableView;//國內(nèi)view
@property (nonatomic,weak)UICollectionView *collectionView;//國外view
3赋续、簡書寫作引用功能引用代碼時太不好用了男翰,算了,還是直接的
//創(chuàng)建Segment及tableview和collectionview
-(void)initView{
self.edgesForExtendedLayout = UIRectEdgeNone;//使視圖頂部不被navbar覆蓋
self.view.backgroundColor = [UIColor whiteColor];//設置view的背景顏色
UISegmentedControl *segment = [[UISegmentedControl alloc] initWithItems:@[@"國內(nèi)",@"國外"]];
segment.selectedSegmentIndex = 0;//默認第一個segment被選中
segment.tintColor =Theme_Color;//設置segment背景顏色
segment.frame = CGRectMake(KSCREENW/2-100, 5, 200, 33);//設置segment
[segment addTarget:self action:@selector(changesegment:) forControlEvents:UIControlEventValueChanged];//監(jiān)聽事件,當控件值改變時調用
self.segment = segment;
[self.view addSubview:segment];
/*初始化collectionView*/
UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init];
UICollectionView *collectionView = [[UICollectionView alloc] initWithFrame:CGRectMake(0,40 ,KSCREW, KSCREENH - 64) collectionViewLayout:flowLayout];
[self.view addSubview:collectionView];
collectionView.backgroundColor = [UIColor whiteColor];
//注冊
[collectionView registerClass:[HXYHandCollectionCell class] forCellWithReuseIdentifier:reuseIdentifier];
self.collectionView = collectionView;
//設置代理
self.collectionView.delegate = self;
self.collectionView.dataSource = self;
[self.view addSubview:collectionView];
/*初始化tableView*/
UITableView *tableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 40, self.view.width, self.view.height - 64) style:UITableViewStylePlain];
tableView.backgroundColor = [UIColor whiteColor];
ttableView.delegate = self;
tableView.dataSource = self;
tableView.hidden = YES;
tableView.tableFooterView = [[UIView alloc] init];
self.tableView = tableView;
[self.view addSubview:tableView];
//這里設置初始化view的時候顯示tabbleview纽乱,
_tableView.hidden = NO;
_collectionView.hidden = YES;
#pragma mark -Action Click
-(void)changesegment:(UISegmentedControl *)segment{
int Index = (int)_segment.selectedSegmentIndex;
switch (Index) {
case 0:
_tableView.hidden = NO;
_collectionView.hidden = YES;
[self tableView];//選中第一個segment
break;
case 1:
_tableView.hidden = YES;
_collectionView.hidden = NO;
[self collectionView];//選中第二個segment
break;
default:
break;
}
}
4蛾绎、最后分別實現(xiàn)一下tableview和collection view的Delegate及DataSource,這就完成了。