iOS学习笔记--03 UITableView相关

以下是我在使用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的颜色不会保留。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值