我想将“法律”标签移到右侧。在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)建议的解决方案:
  • 子类MKMapView
  • moveLegalLabel代码移到那里
  • layoutSubviews命名
  • -(void)layoutSubviews { [super layoutSubviews]; [self moveLegalLabel]; }

    最佳答案

    -viewDidAppear:-mapView:regionWillChangeAnimated:-mapView:regionDidChangeAnimated:这样的钩子(Hook)(如建议的其他钩子(Hook))都不适合此目的。

    最好的选择是在调用MKMapView之后,将-layoutSubviews子类化并在super 中布置标签。

    10-05 21:36