我在XCode上设计了以下布局:
按钮布局(取消,注册)固定在底部布局指南中。最重要的是3个大小相同UIView
s,每个mapView
之间的垂直间距为1px。
剩余空间由UIView
占用,即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!)
}
//...
}
。它固定在顶部,前导和尾随布局指南上。它在建筑物编号视图之间也有8px的间距。
当我在iPhone 6上运行应用程序时,我明白了:
未在所有可用空间中绘制地图。我不知道为什么:
设置地图时,我确实传递了mapView:
的边界<ListView>
我不相信它是一个AutoLayout问题,因为控制台中没有出现警告,而mapView的浅灰色背景表明布局设置正确。
我是否缺少一些配置?感谢。
答案 0 :(得分:1)
问题是自动布局在[Obsolete("Call Foo2() instead of the deprecated Foo()", true)]
public void Foo<T>(IQueryable<T> input)
{
Foo2(input);
}
public void Foo2(IQueryable input)
{
...
}
时没有运行并调整视图大小。将代码移到viewWillAppear
的覆盖中,它应该可以正常工作。但请注意,因为viewDidLayoutSubviews
可以多次运行,所以检查一下,只检查一次,或确保可以多次运行viewDidLayoutSubviews
。