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的顏色不會保留。





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章