我想将“法律”标签移到右侧。在iOS 6和7上,以下解决方案运行良好,但是在iOS 8.3上似乎不起作用。
我得到标签,然后用viewDidLayoutSubviews
中的计时器(0.1秒)调用此方法:
-(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;
}
非常适合旋转等
但是,一旦我滚动 map ,标签就会跳回到左侧。
试图在
regionDidChangeAnimated
中调用此方法,但是标签首先从左跳然后向右跳,这真令人讨厌...我怎么能迫使那个愚蠢的标签留在右边?
,克里斯蒂安(Christian)建议的解决方案:
moveLegalLabel
代码移到那里layoutSubviews
命名-(void)layoutSubviews { [super layoutSubviews]; [self moveLegalLabel]; }
最佳答案
像-viewDidAppear:
,-mapView:regionWillChangeAnimated:
或-mapView:regionDidChangeAnimated:
这样的钩子(Hook)(如建议的其他钩子(Hook))都不适合此目的。
最好的选择是在调用MKMapView
之后,将-layoutSubviews
子类化并在super
中布置标签。