2016-04-27 55 views
-1

我們的表的排列工作良好,除了滲入「載體區」的頂部細胞的頂部排列。解決這個問題需要什麼?iOS:頂級UITableView行滲入載體

enter image description here

我們使用自定徑細胞:當前制約

override func viewDidLoad() { 
    super.viewDidLoad() 
    tableView.estimatedRowHeight = 68.0 
    tableView.rowHeight = UITableViewAutomaticDimension 

概述:

enter image description here

+0

檢查桌面的頂層空間。它是從TopLayout(在狀態欄之後)還是View?開始的? –

+0

抱歉不知道你在說什麼...... –

+0

檢查約束。 tableview的Topspace是從TopLayout(從20開始的y位置)開始的?或從Viewcontr查看原點(y = 0)? –

回答

3

基本上蘋果不希望你做你正在做的事情。看看蘋果的應用程序(設置,郵件等)。你會從來沒有看到一個全屏幕的表格視圖,沒有導航欄在頂部。所以模仿一下。而不是對抗框架,將視圖控制器包裝在UINavigationController中,並讓導航欄自動向下推動表格視圖的頂部。

0

選擇表視圖。在屏幕的右下角(將對象拖動到屏幕的左側),您將看到4個小按鈕。如果你點擊右邊的第二個方塊(兩邊有一條正方形),你會看到一個小的子菜單添加新的約束。在它下面,你有一個有4個值的正方形(右上角 - 右下角)。確保最上面的一個是0,然後單擊半透明虛線紅色線。它應該變成紅色。現在只需點擊底部的「添加約束」按鈕即可完成。

+0

我認爲最高的應該是20是不是?爲了適應狀態欄的高度。 – sikhapol

+0

Xcode不允許我在選擇表格視圖時添加任何約束.... –

+0

@sikhapol如果選擇「約束到邊距」,那麼它是0.否則20。 – Lawrence413

2

通常,當您使用的導航控制器包住視圖控制器,TopLayoutGuide(和BottomLayoutGuide會爲您和「調整滾動查看插圖」,你可以在故事板文件中設置設置,它會自動設置的contentInsets但是由於您不使用導航控制器來包裝您的視圖控制器,因此您有三個選項:

1.手動設置表格視圖的框架以抵消狀態欄的高度

我們只是將表視圖向下移動20點並讓它縮短20分。理想的地方是你的代碼中的某個地方,我們知道每當超級視圖的邊界被改變時它都會被調用。其中之一是viewDidLayoutSubviews

請嘗試將此代碼放入您的視圖控制器的代碼中。

override func viewDidLayoutSubviews() { 
    super.viewDidLayoutSubviews() 
    self.view.superview!.backgroundColor = UIColor.whiteColor() 
    let insets = UIEdgeInsets(top: 20, left: 0, bottom: 0, right: 0) 
    self.view.frame = UIEdgeInsetsInsetRect(self.view.superview!.bounds, insets) 
} 

請注意,我在上海華盈的背景顏色設置爲白色,因爲上海華盈(這很可能是UIWindow)可能沒有背景色,它將使頂部顯示爲黑色。通常在生產代碼中,您可能想要在設置框架之前檢查超級視圖的邊界是否真的發生了變化。

2.使用UIViewController並添加UITableView作爲子視圖。

這種方式Interface Builder將允許您設置所有你想要的約束。

3. UINavigationController

只是包裝這一點,它會出現這樣的有頂部的導航欄大多數應用程序。這可能不是你想要的。但是我很少看到沒有導航控制器包裝的表格視圖。

enter image description here