1. 程式人生 > >iOS9 UITableViewCell 分割線左頂頭

iOS9 UITableViewCell 分割線左頂頭

UITableViewCell在IOS6下分割線是預設頂頭的,在IOS7以後左邊會有一定的間距(15)。

網上有一些解決辦法,分享我找到的最簡單的一種:在資料來源方法tableView:cellForRowAtIndexPath:中加入如下三行

        cell.preservesSuperviewLayoutMargins = NO;
        cell.separatorInset = UIEdgeInsetsZero;
        cell.layoutMargins = UIEdgeInsetsZero;

需要注意的是preservesSuperviewLayoutMargins

layoutMargins是iOS8以後才有的,separatorInset是iOS7以後才有的,如果要相容以前的版本記得先判斷selector是否存在。

至於原因如下:

Setting the separatorInset of tableView to UIEdgeInsetsZero is not going to work. It will only effect the extra separators, not the cells that you created.
iOS8 introduces layoutMargins property on UIView, along with another property called preservesSuperviewLayoutMargins indicating whether superview’s layoutMargins is preserved (Think of it as an override) which is YES by default. layoutMargins property is a set of insets from the edge of the view’s bounds that denote a default spacing for laying out content.
The default separatorInset of tableView and tableViewCell is (top = 0, left = 15, bottom = 0, right = 0)
The default layoutMargins of tableView and tableViewCell is (top = 8, left = 8, bottom = 8, right = 8)
These 3 properties are defining the behaviour of separator indentation.
However, setting tableView’s layoutMargins is not going to effect tableViewCell. Because tableViewCell’s superview is not tableView. It’s tableView’s subView, an instance of UITableViewWrapperView whose superClass is UIScrollView and whose layoutMargins is (top = 8, left = 15, bottom = 8, right = 15) and preservesSuperviewLayoutMargins is YES.
You have to set separatorInset and layoutMargins of tableViewCell directly:
tableViewCell.preservesSuperviewLayoutMargins = NO;
tableViewCell.separatorInset = UIEdgeInsetsZero;
tableViewCell.layoutMargins = UIEdgeInsetsZero;
You can put those code in cell’s init method or awakeFromNib or tableView’s delegate tableView:willDisplayCell:fromRowAtIndexPath, etc.

大致的意思是說iOS7只有separatorInset的概念,在IOS7下tableView的分割線左邊有15畫素的間距。

iOS8中還有layoutMargins,用來表示子view和父view的間距,有8畫素的間距。preservesSuperviewLayoutMargins預設為true表示開啟子view與父view的間距。

相關推薦

iOS9 UITableViewCell 割線頂頭

UITableViewCell在IOS6下分割線是預設頂頭的,在IOS7以後左邊會有一定的間距(15)。 網上有一些解決辦法,分享我找到的最簡單的一種:在資料來源方法tableView:cellForRowAtIndexPath:中加入如下三行

UITableViewcell割線相關、隱藏某條割線

系統預設cell分割線是左邊縮排15pt 大致遇見以下幾種情況: 1.隱藏section分割線,不隱藏row分割線 特別注意初始化UITableView時style設為plain需要再section>=2的情況下才會適用。 2. 如果我們想要隱藏

IOS 設定 UItableViewCell 割線全屏

1. 幹掉系統的 self.leftTableView.separatorStyle = UITableViewCellSeparatorStyleNone; 然後自己新增UIView覆蓋 2.利用系統的屬性設定 IOS7:self.leftTableView.separato

UITableViewCell 割線去除左邊邊距

- (instancetype)initWithCoder:(NSCoder *)coder {     self = [super initWithCoder:coder];     if (self

解決tableView割線頂頭

第一種(不自己劃線) 第一步 //1.解決tableView分割線不頂頭     if ([self.table respondsToSelector:@selector(setSeparatorInset:)])[self.table setSeparatorIn

自定義UITableViewCell割線不顯示或粗細不同的原因

由於系統預設的UITableView的下劃線在自定義的時候並不方便。系統有一個方法 tableview setSeparatorInset:inset 可以修改分割線的起始和終止位置,但是對分割線的粗細和顏色還是無法隨心所欲的修改。 因此我們通常採用自定義

UITableView的割線從最左側開始, 右箭頭,割線顏色; UITableViewCell中ImageView位置大小控制

1、在viewDidLoad中新增 // 重寫UITableView的方法是分割線從最左側開始 if ([_tableView respondsToSelector:@selector(setSeparatorInset:)]) {

Menu菜單屬性添加割線與隱藏多余的割線

ref archive arc 手動 鏈接 tomat mage logs pan MyMenu.AutoLineReduction := maAutomatic; {默認會自動隱藏多余的分割線} //MyMenu.AutoLineReduction := maM

Flex布局結合border:left/right; 來設置文字中間割線

設置高度 com none eight 垂直 有著 log 技術分享 border 今天設計給的稿件的分割線不是平常常見的那種,還給了兩條垂直的線。 比如像這樣: 看到這張圖,第一反應用兩條hr,再設置hr的border-left/right。然而這並不能實現這樣的效果。

RecyclerView線性割線

log 分享 nag adding item之間 bundle set off ted 由於recyclerview默認是沒有分割線的,需要顯示分割線的話,可以在布局裏添加一條有背景色的View標簽,或者通過ItemDecoration來實現,本文以後者為例。 Ite

swift 一句代碼補全tableView割線

etl 代碼 sin isp make display lld gin edge 1、swift實現分割線補全 swift一個大進步,只要設置tableView.separatorInset = UIEdgeInsets.zero即可補全分割線, 2、OC實現分割線補全

Python 使用 Matplotlib 做圖時,如何畫豎直和水平的割線

col http dcb www. prior range swe cdd 轉載 作者:看看鏈接:https://www.zhihu.com/question/21929761/answer/164975814來源:知乎著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉

尚吉剛-讀王堅《在線》有感:在線與否,已成新老世界割線

www. 光有 cli yun 展會 英特爾 lan 生產 美好 王堅博士在《在線》書中,明確地提出,“大數據”這個名字叫錯了,他並沒有反應出數據最本質的東西,光有大對於數據是不夠的,王堅舉的例子是歐洲核子研究中心(CERN),它通過粒子實驗得到了世界上最大的數據庫,但這

RecyclerView源碼解析 - 割線

div 要去 png inf bubuko class rec 源碼解析 gpo 猜想: 既然考慮了分割線,那麽子View在測量時候肯定要去考慮分割線留出的位置 直接measureChild()方法 猜想: 分割線會調用繪制的方法 onDraw() Recy

Bootstrap3基礎 page-header 標題下加割線

header 分割 cast light brush info 且行且珍惜 -h ide 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   

tableview去除割線

結構 ble num 樣式 AS attr IT 沒有 BE 默認分割線,左邊不到屏幕; TableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;三種結構體樣式: /** UITableVi

中間有文字的割線效果

display round ack height style alt itl font splay <div class="with_lineTitle">   <span class="line"></span>   &l

table 會有默認的外邊框,內部會有割線

lsp order pan 隱藏 pac bsp rules class des .表格中邊框的顯示 只顯示上邊框 <table frame=above> 只顯示下邊框 <table frame=bel

這是一條華麗的割線

分割線 華麗 -- 微笑 分割 技術 瞎搞 瞎搞 瞎搞 瞎搞 --------------------------------------------------------------------------------------------------------------

android recycleView 簡單使用二---割線

dap roi 英文 str super ada i++ 構造方法 -o 轉自:https://www.jianshu.com/p/b46a4ff7c10a RecyclerView沒有像之前ListView提供divider屬性,而是提供了方法 recyclerView