我在XCode上设计了以下布局:

按钮布局(取消,注册)被钉在底部布局指南上。最上面是3个大小相等的UIView,它们之间有1px的垂直间距。
剩下的空间由mapView占用,这是一个UIView。它被固定在顶部,引导和尾随布局指南。它在建筑物编号视图之间还有8px间距。
当我在我的iPhone 6上运行应用程序时,我得到如下信息:

地图不是在所有可用的空间中绘制的。我不知道为什么:
在设置映射时,我确实传递了mapView的边界:
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!)
}
//...
}我不认为这是一个AutoLayout问题,因为控制台中没有出现警告,mapView的浅灰色背景表明布局设置正确。
有什么配置我遗漏了吗?谢谢。
发布于 2016-06-26 15:03:10
问题是,在使用viewWillAppear时,Auto还没有运行和调整视图大小。将您的代码移动到viewDidLayoutSubviews的覆盖中,它应该能正常工作。但是要小心,因为viewDidLayoutSubviews可以多次运行,所以检查一下,并且只执行一次设置,或者确保多次运行setupMapView是可以的。
https://stackoverflow.com/questions/38039388
复制相似问题