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 :
moveLegalLabel
code therelayoutSubviews
-(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 calling super
.