我有一个带有MapView的ViewController,控制器由故事板中指定的segue初始化.MapView连接(通过Storyboard)到控制器中的属性.
.h文件
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
Run Code Online (Sandbox Code Playgroud)
我正在使用一种方法将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);
}
Run Code Online (Sandbox Code Playgroud)
从第一次调用此方法viewDidLoad/ viewWillAppear什么都不做,但第二次加载视图时正确居中.日志输出始终为:
size height: 0.000000
size width: 0.000000
Run Code Online (Sandbox Code Playgroud)
在viewDidAppearMapView中调用时居中并且输出大小正确:
size height: 400.000000
size width: 320.000000
Run Code Online (Sandbox Code Playgroud)
我想大小值意味着视图尚未初始化viewDidLoad/ viewWill出现,这可能与我设置区域的问题无关.
我想知道,如果真的不可能在viewDidLoad/中设置MapView的区域,viewWillAppear那么用户看不到区域的变化.
有什么建议?