2016-06-26 5 views
0

完全な範囲を占有しません。その上に3つの等しいサイズのUIViewがあり、それぞれの間に1pxの垂直スペーシングがあります。GMSMapViewは、私はXCodeの上、以下のレイアウトを設計しました

残りのスペースはmapViewで、これはUIViewです。先頭、後ろおよび後ろのレイアウトガイドに固定されています。また、建物番号ビューの間に8pxのスペースがあります。私は私のiPhone 6でアプリケーションを実行すると

、私はこれを取得:

enter image description here

マップは、すべての利用可能なスペースに描かれていません。警告がコンソールに表示されないので、私はそれが自動レイアウトの問題だとは思わない

class RegisterAddressViewController: BaseViewController, CLLocationManagerDelegate, GMSMapViewDelegate { 

    @IBOutlet var mapView : UIView! 

    override func viewWillAppear(animated: Bool) { 
     super.viewWillAppear(animated) 
     self.setupMapView() 
     self.setupLocationManager() 
    } 

    func setupMapView(){ 
     let camera = GMSCameraPosition.cameraWithLatitude(-33.86, 
                  longitude: 151.20, zoom: 6) 
     self.gmsMapView = GMSMapView.mapWithFrame(self.mapView.bounds, camera: camera) 
     self.gmsMapView!.delegate = self 
     self.mapView.addSubview(self.gmsMapView!) 
    } 

    //... 
} 

と:マップを設定するとき

、私はMapViewのの境界を通過しない:私はなぜ知りませんmapViewの明るい灰色の背景は、レイアウトが正しく設定されていることを示します。

いくつかの設定がありますか?ありがとう。

答えて

1

問題はです。の自動レイアウトは、viewWillAppear時にビューが実行されず、サイズが変更されていません。コードをオーバーライドviewDidLayoutSubviewsに移動し、正しく動作するはずです。ただし、viewDidLayoutSubviewsは複数回実行できるので注意してください。そのため、セットアップを1回実行するか、setupMapViewを複数回実行しても問題がないことを確認してください。

+0

名前で判断すると、 'viewDidLayoutSubviews'は' viewWillAppear'が呼び出されるまでにすでに完了していると思いました。私の悪い、私は確かめるためにドキュメントに読んでいたはずです。ありがとう! –

関連する問題