Sur iOS11
, le zPosition
a cessé de fonctionner pour le fichier annotationView. Chaque fois que la région de la carte change.MapKit (MKMapView): zPosition ne fonctionne plus sur iOS11
- Pas de chance avec une solution originale: layer.zPosition = X;
- Pas de chance avec
bringViewToFront
/SendViewToBack
méthodes
Xcode 8.3/9
MISE A JOUR (SOLUTION merci Elias Aalto):
Lors de la création MKAnnotationView:
annotationView.layer.zPosition = 50;
if (IS_OS_11_OR_LATER) {
annotationView.layer.name = @"50";
[annotationView.layer addObserver:MeLikeSingleton forKeyPath:@"zPosition" options:0 context:NULL];
}
En MeLikeSingleton ou quoi que objet d'observateur que vous avez là:
- (void)observeValueForKeyPath:(NSString *)keyPath
ofObject:(id)object
change:(NSDictionary *)change
context:(void *)context {
if (IS_OS_11_OR_LATER) {
if ([keyPath isEqualToString:@"zPosition"]) {
CALayer *layer = object;
int zPosition = FLT_MAX;
if (layer.name) {
zPosition = layer.name.intValue;
}
layer.zPosition = zPosition;
//DDLogInfo(@"Name:%@",layer.name);
}
}
}
- Cette solution utilise la valeur layer.name de garder une trace de Zorder. Si vous avez plusieurs niveaux de zPosition (emplacement de l'utilisateur, cluster, broche, légende);)
- Non pour les boucles, uniquement KVO
- J'ai utilisé un objet Singleton qui observe les changements de valeur de la couche. Dans le cas où vous avez plusieurs MKMapViews utilisés à travers l'application.
COMMENT IL EST AVANT LE TRAVAIL IOS11
..est d'utiliser le
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views
et réglez ici les zPosition.
..mais que (pour certains d'entre nous, encore dunny pourquoi) ne fonctionne plus dans iOS11!
Avez-vous trouvé une solution? Je fais face à la même chose. – d3020
oui, voir le message original – Jaro
Pour tout le monde dans le même bateau: zPosition est apparemment cassé dans iOS 11. S'il vous plaît prendre votre temps pour déposer un rapport de bogue: https://developer.apple.com/bug-reporting/ Plus d'entre nous fichier, plus d'attention ce bug va obtenir à Apple. – Stack