ios - 重新定位合法标签 ( MKAttributionLabel )

标签 ios iphone ios8 mkmapview mapkit

我想将 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 建议的解决方案:

  1. 子类化 MKMapView
  2. moveLegalLabel 代码移到那里
  3. 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/

相关文章:

iphone - 内存警告后导航 Controller 堆栈问题

ios - XMPPFramework - 在 Openfire 上通过 SSL 连接

ios - 使用 swift 代码编码 url

ios - UIDocument openWithCompletionHandler 未在 iOS 设备上完成

ios - NSRoundBankers 没有按照 Apple 的记录工作

ios - Apple Push Service 证书不受信任

iphone - CGPathRef 交集

iphone - 如何在 Windows itunes 上安装 Ad Hoc 配置应用程序?

ios - iPhone 6+ 的限制

ios - 使用swift的方式笔划轮廓编号