iOS9 liste des points de coin en haut à gauche de l'ancre
Je suis à l'aide d'un storyboard segue qui présente une vue contrôleur de liste. Le seque a une coutume UIView
comme son point d'ancrage. Sur la pré-iOS9 la liste serait correctement le point au centre-bas de la coutume UIView
(présenté ci-dessous la UIView). Sur iOS9 il pointe vers le coin supérieur gauche de la UIView
.
Je n'ai essayez de retracer toutes sélecteur appels à la coutume UIView
pour savoir si il ya quelque chose que j'ai peut-être besoin de mettre en œuvre dans ma personnalisé UIView
de fournir le "point chaud" pour la liste, mais ne pouvait pas trouver quelque chose
Toutes les idées..? Grâce
Grâce à @Igor Camilo sa réponse - dans le cas où c'est utile pour certains, c'est comment j'ai corrigé cela dans mon code:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
UIPopoverPresentationController* possiblePopOver = segue.destinationViewController.popoverPresentationController;
if (possiblePopOver != nil) {
//
//iOS9 -- ensure correct sourceRect
//
possiblePopOver.sourceRect = possiblePopOver.sourceView.bounds;
}
...
}
Exemple: "Court" bouton déclenche une liste, la liste points à l'angle supérieur gauche de "Trier" contrôle
- Vous ne pouvez pas utiliser
UIPopoverArrowDirection
constante? Tout le reste est obsolète. - Salut, le problème n'est pas la direction, qui est correctement défini dans la table de montage séquentiel des enchaînements. La question est de savoir où la flèche pointe.
- De sorte qu'il pointe vers l'origine et il n'y a aucun moyen de le régler? La flèche d'aller sur la UIView ou est-il hors de lui?
- Juste un exemple gif dans ma question ci - dessus, vous pouvez voir comment la liste des points à le coin supérieur gauche du bouton de Tri.
- Êtes-vous à l'aide de UIPopoverPresentationController ou UIPopoverController? PresentationController a une sourceRect et sourceView propriétés qui devraient vous permettre d'ajuster le point d'ancrage.
- Je suis à l'aide d'un storyboard segue qui présente une liste sur iPad. Voir la deuxième image avec les réglages. Cela fonctionne bien sur iOS8. Je soupçonne que quelque chose a changé dans iOS9 et l'obtention d'un sourceRect de l'ancre doit s'appuyer sur un manque sélecteur/bien/peu importe sur mon custom UIView (le Bouton de Tri est une coutume UIControl).
Vous devez vous connecter pour publier un commentaire.
J'ai eu exactement le même problème. Je viens résolu par la mise en sourceRect dans prepareForSegue:
anchorView
?sender
oupopoverPresentationController?.sourceView
. Je n'ai pas testé si.Eu le même problème mais mon application a une multitude de pop-over, j'ai donc créé une fonction centralisée pour la correction (mais encore eu à l'utiliser sur chaque vue-contrôleur qui avait pop de contrôle).
Voici un exemple de Igor Camilo l'extrait de code en Objective-C.
UIPopoverPresentationController
.Voici ma solution, à l'intérieur de
prepareForSegue
:Cela vous permettra de déplacer le pointeur vers le bas au centre de la vue d'ancrage
J'ai aussi rencontré ce problème, mais maintenant il fonctionne quand je l'ai ajouté à mon PrepareForSegue fonction. Étant donné que mon Segue ID contient la chaîne Liste
Si vous faites référence à votre liste
UIViewController
dans votre principaleUIViewController
vous pouvez ajuster lasourceRect
propriété pour compenser la liste. Par exemple, sur la listepopoverVC
vous pouvez faire quelque chose comme ça:Essayez de définir la largeur et la hauteur d'ancrage de votre source rect (UIView ou UIBarButtonItem ) et l'a mis à l'actif .Définir lorsque vous êtes initialisation de votre UIView ou UIBarButtonItem.
UIBarButtonItem
UIView
Un peu plus à jour, réponse rapide 3! Pardon tout le casting
juste de mettre à jour un exemple avec du code qui fonctionne pour tout UIView