9
votes

iOS 8 Today Widget Numéro d'alignement

Voici mon storyboard

Entrez la description de l'image ici

J'utilise de manière automatique et n'utilise pas de classes de taille.

Quand je l'ai couru sur iPhone 5S, cela fonctionne bien. (Portrait et paysage) Entrez la description de l'image ici

Mais quand je l'ai couru sur iPhone 6 plus (portrait), cela ne s'aligne pas correctement. Entrez la description de l'image ici

sur iPhone 6 Plus (paysage), c'est pire. Entrez la description de l'image ici

Je sais que je peux utiliser -widgetmargininsetsforPropososedMarginIsets: pour définir la marge, mais dans ce cas, je devrai personnaliser la marge de chaque appareil. Ce serait horrible :(

Y a-t-il un moyen d'aligner la sous-vision au titre moins douloureusement?


5 commentaires

Utilisez-vous la mise en page automatique? Si tel est le cas, définissez simplement une contrainte avec la marge de conteneur.


Mais quelle est la marge, elle diffère sur différents appareils / orientation


Je pense que le système définit la marge correcte pour chaque appareil


Je n'ai pas écrasé la méthode widgetmargininsetsforProProProposedMarginIsets. La marge est différée sur chaque périphérique comme des captures d'écran ci-dessus. (La zone bleue est toute la vue du scénario)


Je devais utiliser WidgetMarginIsets (ajout de la marge de 11 à gauche sur iPad) pour aligner mon texte au texte "TestToday" dans votre exemple. Cela a également été incompatible sur tous les appareils (même des orientations). Cela dépend également si j'utilise le simulateur ou le périphérique réel. Très frustrant!


4 Réponses :


0
votes

1 commentaires

Donc, je dois personnaliser séparément 8 valeurs? (iPhone 5, iPhone 6, iPhone 6+, iPad, sur les deux orientations)



9
votes

Réglage des embarquages ​​de bord à zéro devrait résoudre le problème:

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets
{
    return UIEdgeInsetsZero;
}


2 commentaires

Sur iOS 9, il supprime complètement les embarcations et l'air encore pire.


Merci ~ ça aidez beaucoup. Fonctionne bien sur iOS 9.1



5
votes

On dirait que vous devez la définir manuellement. Vous pouvez le faire en créant une contrainte, puis spécifiant une iboutlet à elle et en définissant la constante en fonction du périphérique / de l'orientation.

Pour référence, voici les marges que j'ai trouvées que vous aviez besoin:

  • 5S - 1 (2PX)
  • 6 - 1 (2px)
  • 6 Plus Portrait - 5 (15px)
  • 6 Plus Paysage - 34 (102px)

    Vous pouvez trouver lequel vous avez besoin de la taille de la vue d'extension, qui est 414 pt pour un portrait iPhone 6.


1 commentaires

Qu'en est-il du paysage et du portrait iPad?



0
votes

corrections pour certains périphériques. Nécessite Ericas Uidevice-extension code>.

- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets
{
    defaultMarginInsets.bottom = 0;

    if ([UIDevice.currentDevice.modelIdentifier containsString:@"iPhone7,1"] && self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassCompact) {
        defaultMarginInsets.left += 5;
    } else if ([UIDevice.currentDevice.modelIdentifier containsString:@"iPhone7,1"] && self.traitCollection.horizontalSizeClass == UIUserInterfaceSizeClassRegular) {
        defaultMarginInsets.left += 34;
    } else {
        defaultMarginInsets.left += 1;
    }

    return defaultMarginInsets;
}


0 commentaires