web-dev-qa-db-ja.com

UITableViewCells Swift3間の間隔

IOS app in Swiftを作成していて、このようにセル間にスペースを追加したい

enter image description here

アタッチイメージと同じように、各テーブルビューセルのスペースを指定します。どうすればできますか?そして今、すべてのセルはスペースなしで来ています。 Swift3

7
Ankit Kumawat

あなたはあなたのtableViewセルのクラスでこれを試すことができます:

class cell: UITableViewCell{
override var frame: CGRect {
    get {
        return super.frame
    }
    set (newFrame) {
        var frame =  newFrame
        frame.Origin.y += 4
        frame.size.height -= 2 * 5
        super.frame = frame
    }
  }
}
10
user8336100

更新:UIEdgeInsetsInsetRectメソッドが置き換えられ、次のようにできるようになりました

contentView.frame = contentView.frame.inset(by: margins)

スウィフト4の答え:

カスタムセルクラスにこの関数を追加します

override func layoutSubviews() {
    super.layoutSubviews()
    //set the values for top,left,bottom,right margins
            let margins = UIEdgeInsets(top: 0, left: 0, bottom: 10, right: 0)
    contentView.frame = UIEdgeInsetsInsetRect(contentView.frame, margins)
}

必要に応じて値を変更できます

*****注意*****スーパー関数の呼び出し

super.layoutSubviews()

そうでなければ、奇妙な問題に遭遇します

5
Gulfam Khan
  1. ストーリーボードから見ると、ビューの階層は次のようになります。 View CellContent(強調表示)には、すべてのコンポーネントが含まれます。

enter image description here

  1. スーパービューから上、下、リーディング、トレーリングからView CellContentに10pxのマージンを与えます。

  2. 次に、tblCellを選択し、背景色を変更します。

enter image description here

enter image description here

  1. ここでプロジェクトを実行し、デリゲートとデータソースが適切にバインドされていることを確認します。

[〜#〜]出力[〜#〜]

enter image description here

注:ダミーの目的でView CellContentに1 UILabelを追加しました。

4
dahiya_boy

この種のレイアウトを実現するためにUITableViewCellを使用している場合、UITableViewCellsの間にスペースを設けることはできません。

選択できるオプションは次のとおりです。

  1. clear backgroundを使用してUIView内にカスタムUITableViewCellを作成し、セル間の間隔のように表示します。

enter image description here

background as clear of:cell, content viewを設定する必要があります。

  1. UICollectionViewの代わりにUITableViewを使用できます。はるかに柔軟性があり、好きなように設計できます。

これに関する詳細が必要な場合はお知らせください。

3
PGDev

簡単な方法の1つは、テーブルビューではなくコレクションビューを使用し、コレクションビューにセル間隔を設定して使用する方法です。

func collectionView(_ collectionView: UICollectionView,
                    layout collectionViewLayout: UICollectionViewLayout,
                    sizeForItemAtIndexPath indexPath: IndexPath) -> CGSize {
    let widthSize = collectionView.frame.size.width / 1
    return CGSize(width: widthSize-2, height: widthSize+20)
}

テーブルビューのみが必要な場合は、コンテナビューとして背景ビューを追加し、背景色を白に設定し、セルの背景色をクリア色に設定して、セルの先頭、トリル、下の背景を10に設定します。

backgroundView.layer.cornerRadius = 2.0
backgroundView.layer.masksToBounds = false
backgroundView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor
2
234 Shk

ぜひお試しください。それは私にとってはうまくいきます。

行の代わりにセクションを使用できます。配列カウントをnumberOfSectionsInTableViewメソッドで返し、numberOfRowsInSectionデリゲートメソッドで1を設定します

使用する [array objectAtIndex:indexPath.section] in cellForRowAtIndexPathメソッド。

heightForHeaderInSectionを40に設定するか、要件に応じて設定します。

よろしくお願いいたします。

0
Sanjukta

-静的にUITableViewCell間隔を設定-Swift 4-完全にはテストされていません。

TableView行の高さを任意の値に設定します。

 override func viewDidLoad() {
    super.viewDidLoad()
    tableView.estimatedRowHeight = <Your preferred cell size>
    tableView.rowHeight = UITableViewAutomaticDimension
    // make sure to set your TableView delegates
    tableView.dataSource = self
    tableView.delegate = self
}

 extension YourClass : UITexFieldDelegate, UITextFieldDataSource {
    //Now set your cells.
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell : UITableViewCell = tableView.dequeueReusableCell(withIdentifier: "yourCell", for: indexPath) as! UITableViewCell

        //to help see the spacing.
        cell.backgroundColor = .red
        cell.textLabel?.text = "Cell"

        return cell
   }
   //display 3 cells
   func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return 3
   }

   //now lets insert a headerView to create the spacing we want. (This will also work for viewForHeaderInSection)
   func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {

    //you can create your own custom view here
    let view = UIView()
    view.frame = CGRect(x: 0, y: 0, width: tableView.frame.width, height: 44) //size of a standard tableViewCell

    //this will hide the headerView and match the tableView's background color.
    view.backgroundColor = UIColor.clear
    return view
 }

  func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
        return 44
  }
}
0
A. Welch