我想将 Legal 标签移到右侧。在 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
中调用这个方法,但是label先左后右跳,真烦人。。。
我怎么能强制那个愚蠢的标签留在右边呢?
Christian 建议的解决方案:
- 子类化 MKMapView
- 将
moveLegalLabel
代码移到那里 - 在
layoutSubviews
中调用
-(void)layoutSubviews
{
[ super 布局 subview ];
[自行移动LegalLabel];
}
最佳答案
您需要它在 viewDidAppear 和两个 MKMapViewDelegate 方法中。如果你不把它放在两个委托(delegate)方法中,你就会得到你看到的跳跃。就这样!
-(void)viewDidAppear:(BOOL)animated
{
[self moveLegalLabel];
}
- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
[self moveLegalLabel];
}
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
[self moveLegalLabel];
}
-(void)moveLegalLabel
{
UIView * legalLink = [self.map.subviews objectAtIndex:1];
legalLink.frame = CGRectMake(self.map.frame.size.width - legalLink.frame.size.width - 10, self.map.frame.size.height - legalLink.frame.size.height - 10 , legalLink.frame.size.width, legalLink.frame.size.height);
legalLink.autoresizingMask = UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleTopMargin;
}
关于ios - 重新定位合法标签 ( MKAttributionLabel ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30735770/