Je crée une application IOS dans Swift et souhaite ajouter un espacement entre les cellules de ce type.
Je voudrais donner un espace de chaque cellule de vue de table identique à mon image d'attache .. Comment puis-je faire cela? et maintenant toutes les cellules arrivent sans aucun espace . Swift3
vous pouvez essayer ceci dans votre classe de cellule 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
}
}
}
Mise à jour: la méthode UIEdgeInsetsInsetRect est remplacée maintenant vous pouvez le faire comme ceci
contentView.frame = contentView.frame.inset(by: margins)
Swift 4 réponse:
dans votre classe de cellule personnalisée, ajoutez cette fonction
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)
}
Vous pouvez changer les valeurs selon vos besoins
***** Remarque ***** Appelant la super fonction
super.layoutSubviews()
est très important sinon vous entrerez dans des problèmes étranges
View CellContent
(comme surligné) contiendra tous les composants.Donnez une marge à View CellContent
de 10px à partir du haut, du bas, à partir de son aperçu.
Maintenant, sélectionnez la tblCell
et changez la couleur d'arrière-plan.
SORTIE
NOTE: Je viens d'ajouter 1 UILabel
dans View CellContent
à des fins factices.
Une méthode simple consiste à afficher la collection au lieu de la table et à donner un espacement des cellules à la vue et à l’utilisation de la collection.
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)
}
Et si vous souhaitez uniquement une vue de table, ajoutez une vue d’arrière-plan en tant que conteneur et définissez la couleur d’arrière-plan blanc et la couleur claire de fond de cellule.
backgroundView.layer.cornerRadius = 2.0
backgroundView.layer.masksToBounds = false
backgroundView.layer.shadowColor = UIColor.black.withAlphaComponent(0.2).cgColor
Si vous utilisez UITableViewCell
pour réaliser ce type de mise en page, rien ne permet de fournir un espacement entre UITableViewCells
.
Voici les options que vous pouvez choisir:
UIView
personnalisée dans UITableViewCell
avec clear background
, afin qu'elle ressemble à l'espacement entre les cellules.Vous devez définir le background as clear
sur: cell, content view
.
UICollectionView
au lieu de UITableView
. Il est beaucoup plus flexible et vous pouvez le concevoir comme vous le souhaitez.Faites-moi savoir si vous souhaitez plus de détails à ce sujet.
Essayez-le. Cela fonctionne bien pour moi.
Vous pouvez utiliser la section au lieu de la ligne . Vous renvoyez le nombre de tableaux dans la méthode numberOfSectionsInTableView
et définissez 1 dans la méthode numberOfRowsInSection
Utilisez [array objectAtIndex:indexPath.section]
dans la méthode cellForRowAtIndexPath
.
Définissez la heightForHeaderInSection
sur 40 ou selon vos besoins.
Merci, j'espère que ça vous aidera
- Espacement UITableViewCell défini de manière statique - Swift 4 - Pas complètement testé.
Définissez la hauteur de votre table tableView sur la valeur que vous préférez.
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
}
}