Ich möchte das Legal-Label auf die rechte Seite verschieben. Auf iOS 6 und 7 funktionierte die folgende Lösung gut, auf iOS 8.3 scheint sie jedoch nicht zu funktionieren.Rechtliche Kennzeichnung repositionieren (MKAttributionLabel)
ich das Etikett, dann mit einem Timer (0,1 sec) in viewDidLayoutSubviews
nenne ich diese Methode:
-(void)moveLegalLabel
{
UIView * legalLink = [self attributionView];
legalLink.frame = CGRectMake(self.mapView.frame.size.width - legalLink.frame.size.width - 10, self.mapView.frame.size.height - legalLink.frame.size.height - 10 , legalLink.frame.size.width, legalLink.frame.size.height);
legalLink.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
}
, die schön für die Rotation funktioniert usw. Aber sobald ich die Karte scrollen, die Etikett springt zurück nach links. versuchten diese Methode in den regionDidChangeAnimated
zu nennen, aber das Label springt zuerst, dann nach links nach rechts, es ist wirklich ärgerlich ...
Wie kann ich so dumm Label zwingen, auf der rechten Seite zu bleiben?
Lösung wie von Christian vorgeschlagen:
- Subclass die MKMapView
- Bewegen Sie den Code
moveLegalLabel
dort - Nennen Sie es in
layoutSubviews
-(void)layoutSubviews { [super layoutSubviews]; [self moveLegalLabel]; }
Warum in aller Welt würden Sie tun, dass mit einer 0,1 Verzögerung? –
@ChristianSchnorr Weil ich das Etikett auf der rechten Seite auch nach der Drehung beibehalten muss. Das Hauptproblem sind die Karten-Neupositionierungen, die nach jeder Regionswechselbeschriftung ... – Templar
Dann wie wäre es, wenn Sie sich nach der Rotation einhaken (aber ohne Verzögerung!) Und alles rückgängig machen, was die Karte getan hat? –