屏幕上有一个scrollView,其下方是一个指南针箭头。一旦我在屏幕上向上或向下移动滚动视图的内容,指南针就会停止工作。当我释放scrollView时,罗盘就会恢复。 当我通过更改计时器上的变量来旋转指南针箭头时,移动滚动视图的内容不会影响此过程。 怎么解决?
import SwiftUI
import Foundation
import Combine
import CoreLocation
class CompassHeading: NSObject, ObservableObject, CLLocationManagerDelegate {
var objectWillChange = PassthroughSubject<Void, Never>()
var degrees: Double = .zero {
didSet {
objectWillChange.send()
}
}
private let locationManager: CLLocationManager
override init() {
self.locationManager = CLLocationManager()
super.init()
self.locationManager.delegate = self
self.setup()
}
private func setup() {
self.locationManager.requestWhenInUseAuthorization()
if CLLocationManager.headingAvailable() {
self.locationManager.startUpdatingHeading()
}
}
func locationManager(_ manager: CLLocationManager, didUpdateHeading newHeading: CLHeading) {
self.degrees = -1 * newHeading.magneticHeading
}
}
struct ContentView: View {
@ObservedObject var compassHeading = CompassHeading()
var body: some View {
VStack {
ScrollView {
Text("Some words\nSome words\nSome words\n")
.padding()
}
Text("⬆️")
.font(.system(size: 100))
.rotationEffect(Angle(degrees: compassHeading.degrees))
}
}
}