Ce n'est pas une question, mais plutôt une solution au problème auquel j'ai été confronté.
Dans Xcode 7, lorsque l'application est exécutée sur iOS 9 sur des appareils iPad, les cellules UITableView laissent une marge sur le côté gauche de la vue de table. Et la rotation de l'appareil en mode paysage augmenterait les marges.
La solution que j'ai trouvée est:
La définition de "cellLayoutMarginsFollowReadableWidth" sur NO.
self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
Depuis, cette propriété n'est disponible que dans iOS 9. Donc, vous devrez mettre une condition pour vérifier la version iOS, sinon elle plantera.
if(NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_8_1)
{
self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
}
J'espère que cela sera 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. Ainsi, dans l'iPhone et l'iPad portrait, les marges sont très petites, mais dans l'iPad paysage, elles sont plus grandes. Dans iOS 9, les marges de cellule d'UITableView suivent par défaut le guide de contenu lisible.
Si vous voulez arrêter cela, définissez simplement cellLayoutMarginsFollowReadableWidth
de tableView 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;
}
}
Swift
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];
}
}
Swift
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 en retard. 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 qui est déjà ajouté à chaque UIView
Il s'agit 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érieure et supérieure, utilisez contentView au lieu de readableContentGuide
afin que les marges verticales du contenu changent en fonction de tableView.rowHeight
.