2017-02-20 8 views
3

基本的なテーブルビューセルがあり、それらの間に間隔を置いています。基本テーブルビューセル間のスペースの追加

enter image description here

私は

cell.contentView.layoutMargins.top = 8 

cell.layoutMargins.top = 8 

を試してみましたが、それは動作しませんでした。私はカスタムセルを作成することができますが、私はこの方法でマージンを追加する方法を知りたいと思います。

EDIT:

enter image description here

と私はそれ

enter image description here

にいくつかの制約を設定することができるようにビューを追加しました:私はカスタムにセルスタイルを変更すると

でも結果は同じですが、スペーシングベットはありません私はセルのためのカスタムクラスが必要なので、私は推測しますが、私はそれをしたくありません。

enter image description here

+0

ちょうど細胞ビュー+余分なスペースビューを(それが背景と同じ色を持っていること)が含まれ、あなたのセルを作成し、それはセル間の間隔のようになります。 – Tj3n

+0

ための最も簡単かつ最短の道私は下にカスタムビューを追加しました – Koushik

答えて

4

あなたは自分自身の細胞間の間隔を追加するのではなく、トップおよび/または下の制約にセルのcontentViewにカスタムcontainerViewを追加しないでください。

enter image description here

+0

これはいい考えですが、コンテナビューは実行時に繰り返されるビューに配置できないというエラーが発生します。次に、セルの設定を「基本」から「カスタム」に変更し、コンテンツビュー内にビューを追加して制約を適用しましたが、効果はありませんでした。 – fullMoon

+0

@fullMoon私は問題を見つけることができるように、あなたのレイアウトを質問に追加してください。 – alexburtnik

0

あなたはセル間の間隔を添加達成= array.count numberOfSectionsを作成し、各セクションは1行のみ含ませることです。 headerViewとその高さを定義します。

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return cellSpacingHeight 
    } 
+2

これは回避策のようなものですが、そうしないでください。テーブルビューのセクションは別の目的のためのものです。あなたはこのアドバイスに従うときに厄介な立場にいることがあります。そしてある時点では、いくつかのセルをセクションに分割する必要があります – alexburtnik

0

セクションが1つの場合は、セクションの行数とtableViewのセクション数を交換してみてください。そして、あなたは、デリゲートを使用することができます間での間隔のために:

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat { 
     return 10 
    } 
1

UITableViewCell年代またはそのcontentViewでの作業、次の2つのセル間のヘッダを作成し、スペースに一般的に

func numberOfSectionsInTableView(tableView: UITableView) -> Int { 
    return array.count 
} 

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int 
{ 
    return 1 // Because we need to space between two cell 
} 

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
{ 
    //Configure your cell 

    let cel:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell! 
    cel.textLabel?.text = array[indexPath.section] //please use section because we have only one row for all section 
    return cel 
} 

func tableView(tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat{ 
    return 15 // whatever you want space between two cell 
} 
0

を追加することができます それを試してみてください。のlayoutMarginsはエラーが発生しやすいです。私の経験では、セルとcontentViewの両方のlayoutMarginsは、テーブルのリロード中にいくつかの点でリセットされます。 2つの回避策があります。

  1. スペーシングセルを使用します。たとえば、contentViewに特定の高さの制約が設定された透過的なUITableViewCellサブクラスを作成するだけです。
  2. 透明なUITableViewCellサブクラスを使用し、独自の(おそらく不透明な)サブビューをcontentViewに追加し、上下の拘束を希望の間隔の1/2に設定します。 setHighlighted:animatedをオーバーライドして、セルの選択方法を制御できます。これは私がスクリーンショットで使っている方法です。また、左右に余白を追加するのにも効果的です。

enter image description here enter image description here

関連する問題