IOS app in Swiftを作成していて、このようにセル間にスペースを追加したい
アタッチイメージと同じように、各テーブルビューセルのスペースを指定します。どうすればできますか?そして今、すべてのセルはスペースなしで来ています。 Swift3
あなたはあなたの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
}
}
}
更新: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()
そうでなければ、奇妙な問題に遭遇します
この種のレイアウトを実現するためにUITableViewCell
を使用している場合、UITableViewCells
の間にスペースを設けることはできません。
選択できるオプションは次のとおりです。
clear background
を使用してUIView
内にカスタムUITableViewCell
を作成し、セル間の間隔のように表示します。background as clear
of:cell, content view
を設定する必要があります。
UICollectionView
の代わりにUITableView
を使用できます。はるかに柔軟性があり、好きなように設計できます。これに関する詳細が必要な場合はお知らせください。
簡単な方法の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
ぜひお試しください。それは私にとってはうまくいきます。
行の代わりにセクションを使用できます。配列カウントをnumberOfSectionsInTableView
メソッドで返し、numberOfRowsInSection
デリゲートメソッドで1を設定します
使用する [array objectAtIndex:indexPath.section]
in cellForRowAtIndexPath
メソッド。
heightForHeaderInSection
を40に設定するか、要件に応じて設定します。
よろしくお願いいたします。
-静的に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
}
}