I'd want to move the Legal label to the right side. On iOS 6 and 7 the below solution was working fine, however on iOS 8.3 it seems to not work.
I get the label, then with a timer (0.1 sec) in viewDidLayoutSubviews
I call this method :
-(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;
}
which works nicely for rotation, etc.
But as soon as I scroll the map, the label jumps back to the left.
Tried to call this method in the regionDidChangeAnimated
but the label jumps back first to the left then to right, it's really annoying...
How could I force that stupid label to stay on the right side ?
Solution as suggested by Christian :
- Subclass the MKMapView
- Move the
moveLegalLabel
code there - Call it in
layoutSubviews
-(void)layoutSubviews
{
[super layoutSubviews];
[self moveLegalLabel];
}
Hooks like
-viewDidAppear:
,-mapView:regionWillChangeAnimated:
or-mapView:regionDidChangeAnimated:
, like others suggested, are not suited for this purpose.You best bet would be to subclass
MKMapView
and layout your label in-layoutSubviews
after callingsuper
.