2015-09-21 24 views
1

的寬度:設置我想用這樣的水平空間創建<code>UITableView</code>的UITableViewCell

enter image description here

於是我找到了解決辦法here

但它似乎不工作「的功能SETFRAME 「不會與iOS9工作,讓我發現了另一個建議,使用layoutSubviews

override func layoutSubviews() { 
    super.layoutSubviews() 

    self.contentView.frame = UIEdgeInsetsInsetRect(self.bounds, UIEdgeInsetsMake(0, 10, 0, 10)) 
} 

但我t不與工作也在這裏是我所得到的:

enter image description here

因此,如何正確添加水平空間,我使用Swift 2Xcode7Storyboard定製UITableViewCell

+0

嘗試: - self.contentView.frame = UIEdgeInsetsMake(0,20,0,20) –

+0

它給出「無法將類型'UIEdgeInsets'的值賦值爲'CGRect'類型的值」 – iOSGeek

+0

是否有原因只是使表視圖變窄? – Fennelouski

回答

9

好的,所以這裏有一個方法是通過製作一個自定義單元來實現這一點。

您可以將TableView上的背景顏色設置爲灰色。

然後在您的自定義原型的UITableViewCell

  1. 設置背景顏色爲透明。
  2. 拖動它的UIView並將其顏色更改爲白色或任何你喜歡的。
  3. 將視圖中的限制左,右,頂部和底部設置爲至少5個單元格。
  4. 請確保您使用委託方法來設置自動高度,然後估計高度,如果您的單元格將具有動態高度。
  5. 也刪除表視圖中的分隔符,以便沒有行。
  6. 在視圖中可以放置標籤以添加文本。

我認爲應該成爲你的目的,讓我知道如何去:)

2

我想你不應該嘗試更新contentView的框架。您應該在contentView下添加一個視圖(作爲父視圖),然後將所有約束應用於該UIView。

+0

我同意。在contentView中有一個containerView並讓iOS調整contentView –

4

請不要嘗試和周圍內容查看的框架改變,蘋果並沒有說明這是可能的。這裏有幾個選項,按照優先順序排列:

  • 這就是UICollectionView是爲什麼打造的。 UICollectionView使得改變各個單元格之間的流程變得非常簡單。考慮將你的實現切換到使用UICollectionView並看看子類化UICollectionViewFlowLayout(或者直接在IB中設置你的佈局)
  • 如果你必須使用UITableView:創建一個封裝你想要的視圖的類細胞。然後讓你的表格查看屏幕的寬度,單元格內容的高度加上垂直邊距。使用適當的插入框架將您的視圖直接添加到單元的contentView
+1

+1沒有必要像這樣自定義'UITableView','UICollectionView'具有您需要的所有這些功能,並且這可以通過故事板來設置行爲,而無需編寫一行碼! – Kuba

+0

@Kuba好點,編輯表明你可以在IB – rudd

1

您可以嘗試子類細胞和覆蓋SETFRAME:

- (void)setFrame:(CGRect)frame { 
    frame.origin.x += inset; 
    frame.size.width -= 2 * inset; 
    [super setFrame:frame]; 
} 
1

您也可以如果您正在使用自定義的tableview細胞在廈門國際銀行比

第一步嘗試此解決方案:右擊上單元xib 第2步:打開爲>源代碼 第3步:嘗試找到<tableViewCellContentView>標記部分。 第四步:找到autoresizingMask標籤下面<tableViewCellContentView><autoresizingMask>標籤 添加widthSizable="YES"例如

`<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" tableViewCell="1Ah-hd-rCV" id="Xqs-eb-z8W">` 

    `<autoresizingMask key="autoresizingMask" widthSizable="YES"/>` 
`</tableViewCellContentView>` 

它看起來像上面的代碼中設置此之後。

因爲tableviewcell的內容視圖不自動調整寬度,所以你必須爲此編碼。像上面一樣。

如果您通過編程添加單元格,則無法幫助您創建xib for tableviewCell並且在故事板中這也可以工作您還必須通過右鍵單擊故事板來打開源代碼。

的UIViewtableViewCell,使細胞背景清晰的tableview要灰不是設置它的背景色灰,讓你想顯示的UIView的大小和做在自動調整大小面具水平拉伸。

希望這會幫助你。 謝謝!

+0

@iOSGeek中做所有的收集視圖的東西,如果你發現的解決方案比它非常好,但我已經發布了新的答案因爲你沒有接受任何答案仍然如此我有張貼新的答覆。 –

+0

@iOSGeek你必須接受答案,因爲如果另一個用戶有與你一樣的問題,那麼他/她可以很容易地找到正確的答案,所以你必須接受你使用過的解決方案是你的責任。它會幫助其他用戶。謝謝! –