【发布时间】:2012-12-11 01:50:58
【问题描述】:
我有一个带有 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/viewWillAppear 中设置 MapView 的区域,这样用户就看不到区域的变化。
有什么建议吗?
【问题讨论】:
-
你说你在 viewWillAppear 中也试过这个吗?如果没有,请在那里尝试。
-
我确实尝试过,但没有成功
标签: objective-c ios mkmapview