我有一个带有 MapView 的 ViewController,控制器由情节提要中指定的 segue 初始化。MapView 连接(通过 Storyboard)到控制器中的一个属性。
.h 文件
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
我正在使用一种方法将 MapView 居中到特定区域:
- (void)centerMapView
{
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake(geoPoint.latitude, geoPoint.longitude), 1000, 1000);
[self.locationMapView setRegion:region animated:NO];
NSLog(@"size height: %f",self.locationMapView.frame.size.height);
NSLog(@"size width: %f",self.locationMapView.frame.size.width);
}
viewDidLoad
第一次从/调用此方法viewWillAppear
没有任何作用,但在第二次加载视图时将其正确居中。日志输出始终为:
size height: 0.000000
size width: 0.000000
在viewDidAppear
MapView 中调用时居中且输出大小正确:
size height: 400.000000
size width: 320.000000
我猜大小值意味着视图尚未在viewDidLoad
/viewWill
出现时初始化,这可能与我设置区域的问题无关。
我想知道,如果真的不可能在viewDidLoad
/中设置 MapView 的区域,viewWillAppear
那么用户看不到该区域的变化。
有什么建议吗?