Dit is geen vraag, maar een oplossing voor het probleem waarmee ik werd geconfronteerd.
In Xcode 7, wanneer de applicatie wordt uitgevoerd op iOS 9 op iPad-apparaten, laat de UITableViewCell
wat marge over aan de linkerkant van de UITableView
. En het apparaat naar het landschap draaien zou de marges vergroten.
De oplossing die ik heb gevonden is:
cellLayoutMarginsFollowReadableWidth
instellen op NO
.
self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
Deze eigenschap is alleen beschikbaar in iOS 9. U moet dus een voorwaarde plaatsen om de iOS-versie te controleren, anders loopt deze vast.
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_8_1)
{
self.tbl_Name.cellLayoutMarginsFollowReadableWidth = NO;
}
Antwoord 1, autoriteit 100%
iOS 9 en hoger:
Dit komt door een nieuwe functie die leesbare inhoudsgidsen wordt genoemd. Het biedt marges die geschikt zijn om te lezen. Dus op iPhone en staande iPad zijn het erg kleine marges. Maar in het landschap, iPad zijn ze groter. In iOS 9 volgen de UITableViewCell
-marges standaard de leesbare inhoudsgids.
Als je dat wilt stoppen, stel je cellLayoutMarginsFollowReadableWidth
van tableView in op NO/false
.
Bron:https://forums.developer.apple. com/thread/5496
Antwoord 2, autoriteit 33%
Tot iOS 9
In viewDidLoad
Doelstelling-C
- (void)viewDidLoad {
[super viewDidLoad];
//Required for iOS 9
if ([[[UIDevice currentDevice]systemVersion]floatValue] >= 9.0) {
self.testTableView.cellLayoutMarginsFollowReadableWidth = NO;
}
}
Snel
override func viewDidLoad() {
super.viewDidLoad()
if #available(iOS 9.0, *) {
tableViewDiet.cellLayoutMarginsFollowReadableWidth = false
}
}
Voeg in TableViewDelegate-methoden de volgende code toe:
Doelstelling-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];
}
}
Snel
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
}
}
Antwoord 3, autoriteit 8%
Ik hoop dat dit nuttig is.
if #available(iOS 9.0, *) {
myTableView.cellLayoutMarginsFollowReadableWidth = false
}
Antwoord 4
readableContentGuide
is een lay-outgids die al aan elke UIView
is toegevoegd.
Dit is om ervoor te zorgen dat de gebruiker zijn hoofd niet hoeft te draaien om de inhoud te lezen.
Als je de leesbare inhoudsgids wilt volgen, doe dan het volgende:
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
Opmerking: in de bovenstaande code gebruiken de onderste en bovenste ankers de contentView in plaats van de readableContentGuide
zodat de verticale marges van de inhoud veranderen op basis van de tableView.rowHeight
.