Ce n’est pas une question, mais plutôt une solution au problème que j’ai rencontré.
Dans Xcode 7, lorsque l’application est exécutée sur iOS 9 sur des périphériques iPad, les cellules UITableView laissent une marge sur le côté gauche de la tableview. Et la rotation de l’appareil en paysage augmenterait les marges.
La solution que j’ai trouvée est la suivante:
Définir “cellLayoutMarginsFollowReadableWidth” sur NO.
self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
Depuis, cette propriété est uniquement disponible dans iOS 9. Vous devrez donc mettre une condition pour vérifier la version d’iOS, sinon elle se bloquera.
if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_8_1) { self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO; }
J’espère que c’est utile aux autres.
Meilleure solution pour iOS 9 et supérieur
Cela est dû à une nouvelle fonctionnalité appelée guides de contenu lisibles. Il fournit des marges adaptées à la lecture. Donc, dans l’iPhone et le portrait iPad, ce sont des marges très petites, mais dans le paysage iPad, elles sont plus grandes. Dans iOS 9, les marges de cellule de UITableView sont définies par défaut comme suit le guide de contenu lisible.
Si vous souhaitez arrêter cela, définissez simplement la propriété cellLayoutMarginsFollowReadableWidth de la cellLayoutMarginsFollowReadableWidth
sur NO/false
.
Solution parfaite jusqu’à iOS 9
Dans viewDidLoad
Objectif c
- (void)viewDidLoad { [super viewDidLoad]; //Required for iOS 9 if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) { self.testTableView.cellLayoutMarginsFollowReadableWidth = NO; } }
Rapide
override func viewDidLoad() { super.viewDidLoad() if #available(iOS 9.0, *) { tableViewDiet.cellLayoutMarginsFollowReadableWidth = false } }
Dans les méthodes TableViewDelegate, ajoutez le code suivant:
Objectif c
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // Remove seperator inset if ([cell respondsToSelector:@selector(setSeparatorInset:)]) { [cell setSeparatorInset:UIEdgeInsetsZero]; } // Prevent the cell from inheriting the Table View's margin settings if ([cell respondsToSelector:@selector(setPreservesSuperviewLayoutMargins:)]) { [cell setPreservesSuperviewLayoutMargins:NO]; } // Explictly set your cell's layout margins if ([cell respondsToSelector:@selector(setLayoutMargins:)]) { [cell setLayoutMargins:UIEdgeInsetsZero]; } }
Rapide
func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) { // Remove seperator inset if cell.respondsToSelector(Selector("setSeparatorInset:")) { cell.separatorInset = UIEdgeInsetsZero } // Prevent the cell from inheriting the Table View's margin settings if cell.respondsToSelector(Selector("setPreservesSuperviewLayoutMargins:")) { cell.preservesSuperviewLayoutMargins = false } // Explictly set your cell's layout margins if cell.respondsToSelector(Selector("setLayoutMargins:")) { cell.layoutMargins = UIEdgeInsetsZero } }
Un peu tard J’espère que c’est utile pour quelqu’un d’autre …
if #available(iOS 9.0, *) { myTableView.cellLayoutMarginsFollowReadableWidth = false }
readableContentGuide
est un guide de mise en page déjà ajouté à chaque UIView
Cela permet de s’assurer que l’utilisateur n’a pas à tourner la tête pour lire le contenu.
Si vous souhaitez suivre le guide de contenu lisible, procédez comme suit:
let baseSection = UIView() contentView.addSubview(baseSection) baseSection.translatesAutoresizingMaskIntoConstraints = false let insets = UIEdgeInsets(top: 4, left: 0, bottom: 4, right: 0) baseSection.leadingAnchor.constraint(equalTo: readableContentGuide.leadingAnchor, constant: insets.left).isActive = true baseSection.trailingAnchor.constraint(equalTo: readableContentGuide.trailingAnchor, constant: -insets.right).isActive = true baseSection.topAnchor.constraint(equalTo: contentView.topAnchor, constant: insets.top).isActive = true baseSection.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: -insets.bottom).isActive = true
Remarque: Dans le code au-dessus des ancres inférieures et supérieures, utilisez le contenu au lieu du readableContentGuide
afin que les marges verticales du contenu changent en fonction de la tableView.rowHeight
.