我有一個帶有MapView的ViewController,控制器通過在故事板中指定的segue進行初始化。 MapView通過Storyboard連接到控制器中的一個屬性。MKMapView和viewDidLoad/viewWillAppear/viewDidAppear使用故事板
.h文件中
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
我使用的方法的MapView中心到特定區域:從viewDidLoad
/viewWillAppear
- (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);
}
調用此方法不做任何事爲先時間,但第二次加載視圖時將其居中。 日誌輸出始終是:
size height: 0.000000
size width: 0.000000
當viewDidAppear
所謂的MapView爲中心和輸出尺寸是正確的:
size height: 400.000000
size width: 320.000000
我猜大小值意味着該視圖尚未初始化出現viewDidLoad
/viewWill
,這可能與我在設置區域時遇到的問題無關。
我在想,如果真的不可能在viewDidLoad
/viewWillAppear
中設置MapView的區域,所以用戶看不到區域的變化。
有什麼建議嗎?
你是否說過你在viewWillAppear中試過這個?如果沒有,請在那裏嘗試。 –
我確實嘗試過,但沒有成功 –