今天把关注界面大致写了一下
偷了个懒,这个界面直接用XIB拉出来的,中间那个九宫格的图片,其实就是一张整图片,这个界面没什么好主意的,只是需要主意一下约束而已,这个不好说,仁者见仁智者见智,每个人的约束都不一样,只要效果有就行了,接下来是点击左上角的第二个界面,如下图
上面这个界面我大致的思路
- 左边的列表为一个TableView,右边也是一个TableView,2个表视图用XIB约束下即可,然后与代码关联
- 左边的类别是通过API请求回来的,不是自己写数组写的,那个白线的效果是直接在画XIB的时候就新加一个白色的View在下方
-
- 右边的列表的cell中间的横线是先取消掉TableView的分栏效果,然后将cell的高度-1,透视出背景色
-
//设置cell的间距 - (void)setFrame:(CGRect)frame { frame.size.height -= 1; [super setFrame:frame]; }
- 在刚进这个推荐关注的时候,需要默认选择第一个分类
-
- (void)loadLeftData { NSMutableDictionary *params = [NSMutableDictionary dictionary]; params[@"a"] = @"category"; params[@"c"] = @"subscribe"; AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager GET:urlAPI parameters:params progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { _leftTabArray = [XHLeftTabModel mj_objectArrayWithKeyValuesArray:responseObject[@"list"]]; [_leftTab reloadData]; //默认选种首行,注意要刷新了表格才能设置默认选择 [_leftTab selectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0] animated:NO scrollPosition:UITableViewScrollPositionTop]; //让右边的表开始刷新 [_rightTab.mj_header beginRefreshing]; } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { [SVProgressHUD showErrorWithStatus:@"刷新数据失败"]; }]; }
要注意要先刷新表视图,才能设置默认选择项.
- 在一个页面有2个表视图,判断是哪个TableView,代码如下
-
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { if (tableView == _leftTab) { XHLeftTabCell *cell = [tableView dequeueReusableCellWithIdentifier:leftIdentifier]; cell.leftTabModel = _leftTabArray[indexPath.row]; return cell; }else { XHRightUserCell *cell = [tableView dequeueReusableCellWithIdentifier:rightIdentifier]; cell.rightUsreModel = [_leftTabArray[_leftTab.indexPathForSelectedRow.row] users][indexPath.row]; return cell; } }
- 关于左边的那个分类表视图,没有像做头部视图那样用算坐标的方法来使红条滑动,而是直接每个cell都有个红条,然后根据selected来判断点击的是哪一个cell,就将其他cell的红条给hidden掉就行了,换背景色也是一样的思路,也是根据selected来换,为了和右边的表视图保持颜色一致,代码如下
-
//根据选中的cell来换颜色和红条 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; //没被选中的cell红条隐藏 self.redLine.hidden = !selected; //使用三目来设置选中和未被选中的字体颜色 self.textLabel.textColor = selected ? [UIColor redColor] : [UIColor colorWithRed:80/255.0 green:80/255.0 blue:80/255.0 alpha:1]; UIView *whiteColor = [[UIView alloc]init]; whiteColor.backgroundColor = [UIColor whiteColor]; UIView *grayColor = [[UIView alloc]init]; grayColor.backgroundColor = RGB(240, 240, 240); //设置背景色,与右边的保持一致 self.selectedBackgroundView = selected ? whiteColor : grayColor; }