UITableView section de l'indice d'espacement sur iOS 7
Sur iOS 6, mon UITableView de la section index de distribuer tous ses éléments uniformément sur toute la hauteur de la vue de la table. Dans iOS 7, tous les éléments sont agglutinées dans le milieu, les éléments difficiles à exploiter. Est-il possible de les espacer?
- Je ne pense pas que vous pouvez, sauf si vous écrivez votre propre contrôle. La section de l'index est mis en œuvre par un objet de la classe UITableViewIndex et il n'a pas l'air d'être des propriétés, des méthodes pour influencer la manière dont les lignes sont espacées (voir github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/...). Je voudrais déposer une demande à l'adresse bugreport.apple.com (et aussi le poster sur openradar.appspot.com
- Cool. Voir openradar.appspot.com/radar?id=6744206756282368 de référence.
- comment avez-vous résolu?
- quelqu'un de venir avec un décent fixer encore ?
- donc, il n'y a pas de solution trouvée encore ?
Vous devez vous connecter pour publier un commentaire.
L'une des solutions possibles est d'ajouter une chaîne vide juste après chaque ajout de véritable titre à votre section de l'indice de titre du tableau et le retour de l'indice divisé par 2 à votre
tableView: sectionForSectionIndexTitle: atIndex:
méthode.Ce truc légèrement augmenter la distance entre les titres, mais n'a pas de résoudre complètement ce problème.
Ici est une mise en œuvre de Anton Malmygin réponse, vous pouvez ajouter plus d'espace en ajoutant simplement plus vide itens sur le tableau:
Tout d'abord, nous allons créer un tableau avec le faux index.
Ensuite, vous pouvez mettre en œuvre tableview délégué méthodes avec l'approche suivante:
Et voici le résultat:
Il y a un peu plus facile pour remplir Anton suggestion, il peut aussi être étendu à un nombre quelconque d'indices par section (au lieu d'avoir juste deux Anton suggéré). Si vous ajoutez le nombre supplémentaire de l'indice de titres que vous voulez. Dans cet exemple j'ai utilisé 4.
Donc d'abord vous ajoutez les choses à un
indexTitles
tableau, dansviewDidLoad
ou quoi que ce soit.REMARQUE: Ceci peut aussi être fait de façon dynamique si vous ajoutez du contenu à la tableView
de manière asynchrone, c'est pourquoi j'ai ajouté de l'instruction if, donc tant que ce n'est pas la première
il sera remplacer les chaînes vides avec des périodes. Il en est ainsi il n'y aura pas errants
périodes à la fin
Maintenant, il suffit d'utiliser l'opérateur modulo, selon le nombre de chaînes que nous avons par l'index de Titre.
}
N'oubliez pas de déclarer la section de l'indice des titres pour la tableView.
Voici celle que j'ai faite qui charge le contenu de manière dynamique:
j'ai trouvé une solution de contournement:
ajouter ci-dessous dans votre méthode et après le chargement des données
J'ai essayé la solution de contournement par Jatin, mais le résultat n'était que le changement de couleur et la police de la section de l'index. Il reste à la verticale comprimé et centré.
Je pense que c'est le nouveau comportement de iOS7 (même si je pense que ce n'est pas le meilleur aspect visuel). Ce comportement est visible également dans ce document officiel d'Apple: iOS Human Interface Guidelines - Table
Ici est quelque chose que j'ai joué avec et travaille. Il suit Anton M conseils, utilise Swift 2 et ios 9.
Disons que vous avez la section suivante index:
De sorte que tout le monde est sur la même page, l'Un est à l'index 0. B est à l'index 1 et ainsi de suite.
Supposons que vous voulez de deux espaces entre les index. Définissez ensuite votre section index:
Donc, maintenant, est toujours à l'indice 0, mais B est maintenant à l'indice 3, C est à 6, D est à la 9 E à la 12.
Tous vous avez besoin est de trouver l'offset dans le sectionForSectionIndexTitle. Ce que vous êtes après est l'indice d'un véritable titre que c'est ce que vous avez dans votre tableau. Donc:
Ainsi, pour chaque espace supplémentaire, vous avez besoin entre les indices vous avez besoin pour ajouter 1 à l'agent recenseur de l'expression ci-dessus. Vous pouvez facilement tester cela dans l'Aire de jeu.
J'ai essayé ce mod et il fonctionne, mais vous devez également définir l'appel de la routine dans le viewDidAppear méthode de sorte que chaque fois que l'affichage apparaît, vous devez appeler cette routine et puis rechargez votre table.