Mat*_*ack 94 google-maps swift xcode9-beta
我在Xcode 9 beta,iOS 11中使用谷歌地图.
我收到错误输出到日志如下:
主线程检查器:在后台线程上调用的UI API: - [UIApplication applicationState] PID:4442,TID:837820,线程名称:com.google.Maps.LabelingBehavior,队列名称:com.apple.root.default-qos.overcommit ,QoS:21
为什么会发生这种情况,因为我几乎可以肯定我并没有改变代码中主线程的任何接口元素.
override func viewDidLoad() {
let locationManager = CLLocationManager()
locationManager.requestAlwaysAuthorization()
locationManager.requestWhenInUseAuthorization()
if CLLocationManager.locationServicesEnabled() {
locationManager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
locationManager.startUpdatingLocation()
}
viewMap.delegate = self
let camera = GMSCameraPosition.camera(withLatitude: 53.7931183329367, longitude: -1.53649874031544, zoom: 17.0)
viewMap.animate(to: camera)
}
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
let locValue:CLLocationCoordinate2D = manager.location!.coordinate
print("locations = \(locValue.latitude) \(locValue.longitude)")
}
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
}
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
if(moving > 1){
moving = 1
UIView.animate(withDuration: 0.5, delay: 0, animations: {
self.topBarConstraint.constant = self.topBarConstraint.constant + (self.topBar.bounds.height / 2)
self.bottomHalfConstraint.constant = self.bottomHalfConstraint.constant + (self.topBar.bounds.height / 2)
self.view.layoutIfNeeded()
}, completion: nil)
}
moving = 1
}
// Camera change Position this methods will call every time
func mapView(_ mapView: GMSMapView, didChange position: GMSCameraPosition) {
moving = moving + 1
if(moving == 2){
UIView.animate(withDuration: 0.5, delay: 0, animations: {
self.topBarConstraint.constant = self.topBarConstraint.constant - (self.topBar.bounds.height / 2)
self.bottomHalfConstraint.constant = self.bottomHalfConstraint.constant - (self.topBar.bounds.height / 2)
self.view.layoutIfNeeded()
}, completion: nil)
}
DispatchQueue.main.async {
print("Moving: \(moving) Latitude: \(self.viewMap.camera.target.latitude)")
print("Moving: \(moving) Longitude: \(self.viewMap.camera.target.longitude)")
}
}
Run Code Online (Sandbox Code Playgroud)
Unc*_*rks 142
很难找到有时没有在主线程中执行的UI代码.您可以使用以下技巧找到并修复它.
Dim*_*dui 46
尝试包装修改UI的所有代码行DispatchQueue.main.async {}.
Sco*_*des 27
首先,请确保使用以下方法从主线程中调用Google地图和ui更改的调用:
DispatchQueue.main.async {
//Do UI Code here.
//Call Google maps methods.
}
Run Code Online (Sandbox Code Playgroud)
另外,更新您当前版本的Google地图。Google地图必须对线程检查器进行一些更新。
问题是:“为什么会这样?” 我认为苹果为一个边缘案例添加了一个断言,然后谷歌不得不为其更新pod。
| 归档时间: |
|
| 查看次数: |
57548 次 |
| 最近记录: |