小编Chr*_*ite的帖子

使用Storyboard的MKMapView和viewDidLoad/viewWillAppear/viewDidAppear

我有一个带有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那么用户看不到区域的变化.

有什么建议?

objective-c mkmapview ios

5
推荐指数
1
解决办法
1043
查看次数

标签 统计

ios ×1

mkmapview ×1

objective-c ×1