Voici mon storyboard p>
p>
J'utilise de manière automatique et n'utilise pas de classes de taille. P>
Quand je l'ai couru sur iPhone 5S, cela fonctionne bien. (Portrait et paysage)
p>
Mais quand je l'ai couru sur iPhone 6 plus (portrait), cela ne s'aligne pas correctement.
p>
sur iPhone 6 Plus (paysage), c'est pire.
p>
Je sais que je peux utiliser Y a-t-il un moyen d'aligner la sous-vision au titre moins douloureusement? P> -widgetmargininsetsforPropososedMarginIsets: code> pour définir la marge, mais dans ce cas, je devrai personnaliser la marge de chaque appareil. Ce serait horrible :( p>
4 Réponses :
Vous devez personnaliser les marges du widget: documentation: https://developer.apple.com/library/ios/documentation/notificationcenter/reference/ncwidgetproviding_protocol/index.html P> P>
Donc, je dois personnaliser séparément 8 valeurs? (iPhone 5, iPhone 6, iPhone 6+, iPad, sur les deux orientations)
Réglage des embarquages de bord à zéro devrait résoudre le problème:
- (UIEdgeInsets)widgetMarginInsetsForProposedMarginInsets:(UIEdgeInsets)defaultMarginInsets { return UIEdgeInsetsZero; }
Sur iOS 9, il supprime complètement les embarcations et l'air encore pire.
Merci ~ ça aidez beaucoup. Fonctionne bien sur iOS 9.1
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. P>
Pour référence, voici les marges que j'ai trouvées que vous aviez besoin: p>
Vous pouvez trouver lequel vous avez besoin de la taille de la vue d'extension, qui est 414 pt pour un portrait iPhone 6. P>
Qu'en est-il du paysage et du portrait iPad?
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;
}
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!