以下是我在使用UITableView的过程中遇到的一些情况,跟大家分享下:
一、UITableView顶部留有空白,当场就吓尿了。如下:
这时候的storyboard中UITableView如下的:
这红色框区域的空白是什么鬼。。。
当我改变storyboard中tableView的起始位置之后,居然正常了:
但是为什么会这样呢?改变UITableView的起始位置之前,其顶部不是还有UINavigationBar(标题栏)吗?显然,改变位置之后,UITableView顶部还是留有空白的,只是被UINavigationBar(标题栏)遮挡了。而且,这空白的高度跟UINavigationBar的高度是一致的,均为64。
为此,上网搜索了一下,得到如下的结论:
UIViewController下如果只有一个UIScollView或者其子类(UITableView,UICollectionView),那么会自动留出空白,让scollview滚动经过各种bar下面时能隐约看到内容。但是每个UIViewController只能有唯一一个UIScollView或者其子类,如果超过一个,需要将此属性设置为NO,自己去控制留白以及坐标问题。
虽然看不太懂,但是有如下解决方法:
self.automaticallyAdjustsScrollViewInsets = NO;(写在viewDidLoad中)
果然有效。
二、去除UITableView多余的横线。
我们可以注意到上面的tableView中,即使该项没有内容,也有横线,如何去除呢?
self.MyTableView.tableFooterView = [[UIView alloc]initWithFrame:CGRectZero];(写在viewDidLoad中)
效果如下:
三、通常,tableViewcell点击之后会变成灰色,这是默认情况。其实它有四种点击后样式:
typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) {
UITableViewCellSelectionStyleNone,
UITableViewCellSelectionStyleBlue,
UITableViewCellSelectionStyleGray,
UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS(7_0)
}
可是,除了UITableViewCellSelectionStyleNone可设置cell选中为无颜色之外,其余几项无论如何设置,均为灰色。
为什么会这样呢?因为iOS7之后弃用了。
那如果非要使得选中之后有颜色呢?
可以设置cell的selectedBackgroundView,重新手写一个UIView,赋给它就得了。如下:
(写在cellForRowAtIndexPath回调函数中)
UIView *bgView = [[UIView alloc]init];
bgView.backgroundColor = [UIColor blueColor];//这里设置自己需要的颜色即可。如蓝色
cell.selectedBackgroundView = bgView;
还有一种情况是,点击了cell之后,跳转到另外一个页面。默认情况下,返回该页面的时候,点击时候的背景颜色是不会去掉的。这时可以在回调函数中加上:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
}
这样的话,点击之后跳转页面,返回原页面,选择cell的颜色不会保留。