0

このView Controllerをストーリーボードに設定しましたが、MapViewをプログラムで追加する必要があります。

マップがビューの幅を埋め、両方の方向で高さが 100 になるようにします。また、マップの下にある imageView には 10 の間隔が必要です。

これは私が使用しているコードです。

_map = [MyClass sharedMap]; // Get singleton
[_map removeFromSuperview]; // Remove from the other VC view
[_map removeConstraints:[_map constraints]]; // Remove constraints if any
[[self view] addSubview:_map];
[[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[_map]|" options:0 metrics:nil views:@{@"_map" : _map}]];
[[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[_map(100)]-10-[_sellerImage]" options:0 metrics:nil views:@{@"_map" : _map, @"_imageView" : _imageView}]];

しかし、結果は次のとおりです。

  • 幅は一定で、画面幅を埋めません
  • 縦向きにすると高さが高くなる
  • imageView への 10 ピクセルの間隔は問題ありません

マップの初期フレームを設定する必要がありますか?

この mapview は、メモリを節約するために多くのビューで使用されるシングルトンです。これはその初期化コードです:

+ (MKMapView *)sharedMap {
  static MKMapView *mapView;
  static dispatch_once_t onceToken;

  dispatch_once(&onceToken, ^{
    mapView = [[MKMapView alloc] init];
    if (IS_IOS_7) {
      [mapView setShowsUserLocation:YES];
      [mapView setPitchEnabled:NO];
    }
    [mapView setAutoresizingMask:UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth];
  });

  return mapView;
}
4

1 に答える 1