Tôi có một ViewController với một MapView, bộ điều khiển được khởi tạo bởi một khoảng cách được chỉ định trong bảng phân cảnh. MapView được kết nối (thông qua Storyboard) đến một thuộc tính trong bộ điều khiển.MKMapView và viewDidLoad/viewWillAppear/viewDidAppear sử dụng Storyboards
.h tập tin
@interface DetailViewController : UIViewController <MKMapViewDelegate>
@property (weak, nonatomic) IBOutlet MKMapView *locationMapView;
Tôi đang sử dụng một phương pháp để tập trung các MapView đến một khu vực cụ thể:
- (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);
}
gọi method này từ viewDidLoad
/viewWillAppear
không làm gì cho lần đầu tiên thời gian, nhưng trung tâm nó một cách chính xác cho lần thứ hai xem được nạp. Sản lượng Log luôn là:
size height: 0.000000
size width: 0.000000
Khi được gọi trong viewDidAppear
các MapView tập trung và kích thước đầu ra là chính xác:
size height: 400.000000
size width: 320.000000
Tôi đoán các giá trị kích thước có nghĩa là quan điểm vẫn chưa được khởi tạo trong viewDidLoad
/viewWill
xuất hiện, điều này có thể không liên quan đến vấn đề của tôi khi thiết lập khu vực.
Tôi tự hỏi, nếu thực sự không thể thiết lập vùng của MapView trong viewDidLoad
/viewWillAppear
để người dùng không thấy sự thay đổi của khu vực.
Bạn có lời khuyên nào không?
Bạn có nói rằng bạn đã thử tính năng này trong chế độ xemLàm đẹp hơn không? Nếu không, hãy thử nó ở đó. –
Tôi đã thử mà không thành công –