Je viens de m’apercevoir la propriété de Delta iOS 6/7 trouvée sous disposition de structures de la UIView.
Ce qui est ceci pour et pourquoi est-ce manque de mise en forme automatique ?
Je viens de m’apercevoir la propriété de Delta iOS 6/7 trouvée sous disposition de structures de la UIView.
Ce qui est ceci pour et pourquoi est-ce manque de mise en forme automatique ?
Note: j'ai remarqué à cette question, il y a un moment, mais je suis le seul à poster ma réponse maintenant, parce que le NDA a été levé
Comme vous l'avez remarqué, iOS 7 apporte un tout nouveau look. Le look de l'INTERFACE utilisateur, les éléments ont changé, mais aussi de certains de leurs tailles (ou métriques en général). Cela peut rendre la conception d'interface pour accueillir à la fois iOS 7 et ses prédécesseurs un peu de douleur.
Apple officiel de la ligne est d'utiliser la mise en forme automatique afin de résoudre ce; cela doit prendre beaucoup de les tracas de la disposition des éléments de l'INTERFACE utilisateur pour vous. Parfois intégrant ce n'est pas facile à faire, surtout si vous devez encore le support de l'iOS 5 pour des raisons d'affaires, ou vos interfaces sont gérés d'une manière qui rend la mise en œuvre de mise en page automatique difficile. En tant que tel, Apple semble avoir fourni un moyen de rendre votre travail un peu plus facile si vous tombez dans cette catégorie de niche, et ils ont appelé ce iOS 6/7 Deltas.
Tandis que l'étiquette dans Interface Builder est un peu confus quant à ce "Delta" signifie dans ce contexte, le code contenu dans le .xib fichier qui correspond à cette fonction est un peu plus clair:
<inset key="insetFor6xAndEarlier" minX="-50" minY="-100" maxX="-50" maxY="300"/>
Le nom de la clé insetFor6xAndEarlier
stipule explicitement ce qu'il fait; vous pouvez fournir d'autres encarts pour les éléments de l'INTERFACE utilisateur lorsque vous l'exécutez sur iOS 7 prédécesseurs. Par exemple, le code ci-dessus définit le delta suivantes changement:
x: 50
y: 100
width: -100
height: 200
Tandis que les valeurs stockées dans le .xib ne correspond pas à la cité des valeurs directement, il y a une corrélation entre eux.
x: -minX
y: -minY
width: minX + maxX
height: minY + maxY
Les images ci-dessous montre ce changement visuellement. Il est tout à fait un exemple extrême, mais c'est pour démontrer sa capacité. Je voudrais seulement que, dans la pratique, pour avoir les changements de delta de quelques pixels.
Vous pouvez remarquer que les valeurs sont l'inverse de l'iOS 6 vue; c'est parce que les deltas sont relatives au type de vue que vous travaillez avec. Si vous êtes d'édition pour iOS 6, les deltas il y a dans le but de transformer l'élément correctement pour iOS 7 (à l'inverse de l'exemple ci-dessus).
Afin de voir les différents styles, vous pouvez changer le mode d'Interface Builder présente basé sur le système d'exploitation, il serait exécuté. C'est contenue dans le Fichier Inspecteur->Interface Builder Document (1er onglet sur la barre de droite), comme suit:
Pas directement, mais vous pouvez facilement obtenir le même effet par conditionnelle des contrôles sur la version de l'OS à l'intérieur de votre code, et le réglage de la position correcte/taille en conséquence. Le delta possibilité existe dans Interface Builder, car il n'y aurait pas de façon simple d'avoir conditionnelle de positionnement sans avoir le code pour le faire, et le point d'Interface Builder est d'obtenir une quantité de code de la route que possible pour l'INTERFACE utilisateur.
Apple vous recommandons d'utiliser la mise en forme automatique, il rend votre vie plus facile dans la plupart des cas. Si vous ne pouvez pas l'utiliser (pour les raisons mentionnées ci-dessus), les deltas de vous fournir la possibilité de positionner vos éléments d'INTERFACE utilisateur de manière appropriée, en fonction de l'OS de la métrique, sans la nécessité de repositionner manuellement dans le code. Un bon exemple est à régler pour le manque de la barre d'état, mais il ya beaucoup d'autres cas d'utilisation.
Naturellement, si vous êtes seulement en développement pour iOS7 et au-dessus, vous n'avez pas besoin de cette fonctionnalité/ne pas le découvrir. Si vous avez besoin d'avoir iOS6 les appareils exécutant votre application lors de la construction avec l'iOS7 SDK, sans mise en forme automatique, vous avez besoin de deltas.
Au moment de la rédaction (21 août), je ne trouve pas de documentation concernant cette fonctionnalité, ni de mentions dans la WWDC matériel. J'ai eu un jouer, et après un peu de recherche, c'est ce que j'ai découvert.
Cela fait en réalité référence à la différence entre la position de mise en page à partir de iOS6 pour iOS7.
Dans iOS7, certains points de vue peuvent masquer la barre de statut ou ont transparente, et, en effet, il est recouvert sur le dessus de votre point de vue. Donc, si vous placez un élément de l'INTERFACE utilisateur (0.0, 0.0) sur iOS6, il apparaîtra en dessous de la barre d'état, mais sur iOS7 il semblerait partiellement couvertes en dessous de la barre d'état. Donc, dans ce cas, vous voulez un delta qui correspond à la hauteur de la barre d'état (20.0 points) de sorte que la mise en page est identique à l'iOS6 et iOS7.
Je crois que ce n'est pas nécessaire si vous utilisez la mise en forme automatique, mais bien sûr, alors vous perdez iPad1 l'appui, que beaucoup d'entre nous ne sont pas disposés à concéder à ce point dans le temps.
Je sais que c'est déjà une réponse, tout en ajoutant une petite variante en espérant qu'il pourrait également aider ceux qui n'utilisent pas mise en page automatique et que vous voulez encore de support d'iOS 6.1 et les versions antérieures.
Lire cet Apple Transition Guide - Soutenir la version antérieure
Choisissez "Afficher en tant que' à 'iOS 7.0 et plus Tard"
De Base de l'INTERFACE utilisateur pour iOS 7. Pour iOS 6 donner adapté valeur delta. Utiliser l'aperçu pour voir comment cela va se rendre dans iOS 7 et iOS 6 appareil.
Étapes rapides:
Sélectionnez chacun des enfants immédiats de vue de la racine individuellement et ajouter 20px à sa valeur 'Y'.
Ensuite, sélectionnez tous les enfants immédiats collectivement et donner delta Y as-20px. Vous pouvez aussi faire cela dans le lot ou individuellement.
Mise en forme automatique nécessite au minimum iOS 6.0. Si vous souhaitez prendre en charge d’iOS 5.0, vous ne pouviez pas utiliser la mise en forme automatique.
Et ces deltas sont utilisés pour vous aider à ajuster la position d’affichage sur la version iOS différents (principalement iOS 7 et version de l’iOS inférieur à 7).
J’utilise ces valeur pour m’aider comme cette image.
Pour voir iOS 6/7 Delta dans l'action, je vais démo avec un SegmentedControl qui s'affiche correctement sur iOS 6 et iOS 7 appareils.
Tout d'abord, sélectionnez votre .Xib ou ViewController dans le Storyboard. Décochez la case Utiliser la mise en page automatique et sélectionnez "Afficher en tant que iOS 7 et plus tard"
Dans l'Interface du Générateur de toile, endroit de votre SegmentedControl de sorte que son origine.y est de 20. Dans iOS 6/7 Delta, choisissez -20 pour DeltaY
Cela rendra votre la SegmentedControl posé en dessous de la Barre d'État dans les deux iOS 6 et iOS 7 appareils
Une autre utilité des citations de Guide du Développeur de l'iOS 7 Barre d'État
Les Deltas peuvent être réglés individuellement pour chaque point de vue et de travailler comme vous le feriez s'attendre. Si votre scénario ou de la graine est définie comme iOS 6, alors réglage de la deltas sera la cause de ce point de vue pour être déplacé et/ou redimensionnée par le jeu de delta montant lorsque vous exécutez dans iOS 7. Alternativement, si votre storyboard ou de la graine est réglé pour afficher dans iOS 7, puis les deltas seront appliquée lors de l'exécution dans iOS 6
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.