Ios Swift加速计数据don';更新UIT标签阴影
我想通过使用加速计数据改变UILabel的阴影位置。我已经成功地在控制台输出中看到了加速计数据,但阴影不想更新自身位置。我所拥有的只是应用程序启动时不同的阴影位置 我需要每秒钟或经常更新它 关于应用阴影位置的代码是:Ios Swift加速计数据don';更新UIT标签阴影,ios,xcode,swift,Ios,Xcode,Swift,我想通过使用加速计数据改变UILabel的阴影位置。我已经成功地在控制台输出中看到了加速计数据,但阴影不想更新自身位置。我所拥有的只是应用程序启动时不同的阴影位置 我需要每秒钟或经常更新它 关于应用阴影位置的代码是: self.bigLabel.layer.shadowOffset = CGSize(width: (14 - data.acceleration.y*5), height: (14 - data.acceleration.z*5)) 我做错了什么 @IBOutlet weak v
self.bigLabel.layer.shadowOffset = CGSize(width: (14 - data.acceleration.y*5), height: (14 - data.acceleration.z*5))
我做错了什么
@IBOutlet weak var bigLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.bigLabel.layer.shadowColor = UIColor(red: 61/255, green: 88/255, blue: 126/255, alpha: 0.8).CGColor
self.bigLabel.layer.shadowRadius = 5
self.bigLabel.layer.shadowOpacity = 1
if motionManager.accelerometerAvailable{
let queue = NSOperationQueue()
motionManager.startAccelerometerUpdatesToQueue(queue, withHandler:
{(data: CMAccelerometerData!, error: NSError!) in
self.bigLabel.layer.shadowOffset = CGSize(width: (14 - data.acceleration.y*5), height: (14 - data.acceleration.z*5))
println("X = \(data.acceleration.x)")
println("Y = \(data.acceleration.y)")
println("Z = \(data.acceleration.z)")
}
)
} else {
println("Accelerometer is not available")
}
}
您正在更改图层的
阴影偏移量
尝试这样做:
self.biglab.shadowOffset=CGSize(宽度:(14-data.acceleration.y*5),高度:(14-data.acceleration.z*5))
您正在更改层的阴影偏移量
尝试这样做:
self.biglab.shadowOffset=CGSize(宽度:(14-data.acceleration.y*5),高度:(14-data.acceleration.z*5))
您正在更改层的阴影偏移量
尝试这样做:
self.biglab.shadowOffset=CGSize(宽度:(14-data.acceleration.y*5),高度:(14-data.acceleration.z*5))
您正在更改层的阴影偏移量
尝试这样做:
self.bigLabel.shadowOffset=CGSize(宽度:(14-data.acceleration.y*5),高度:(14-data.acceleration.z*5))
问题是,您在后台队列上接收更新,除了主队列之外,无法更新UI元素。最简单的解决方案是,只需将传递给motionManager的队列更改为主队列即可。startAccelerometerUpdatesToQueue
:
let queue = NSOperationQueue.mainQueue()
motionManager.startAccelerometerUpdatesToQueue(queue, withHandler: ...
然而,缔约国:
因为处理的事件可能以很高的速率到达,所以使用
不建议使用主操作队列
因此,您可能应该设置为默认值以外的其他值。当然,这取决于您的应用程序,但是像1.0/30.0
这样的东西可能是一个很好的开始。问题是,您在后台队列上接收更新,除了主队列之外,您无法从任何地方更新UI元素。最简单的解决方案是,只需将传递给motionManager的队列更改为主队列即可。startAccelerometerUpdatesToQueue
:
let queue = NSOperationQueue.mainQueue()
motionManager.startAccelerometerUpdatesToQueue(queue, withHandler: ...
然而,缔约国:
因为处理的事件可能以很高的速率到达,所以使用
不建议使用主操作队列
因此,您可能应该设置为默认值以外的其他值。当然,这取决于您的应用程序,但是像1.0/30.0
这样的东西可能是一个很好的开始。问题是,您在后台队列上接收更新,除了主队列之外,您无法从任何地方更新UI元素。最简单的解决方案是,只需将传递给motionManager的队列更改为主队列即可。startAccelerometerUpdatesToQueue
:
let queue = NSOperationQueue.mainQueue()
motionManager.startAccelerometerUpdatesToQueue(queue, withHandler: ...
然而,缔约国:
因为处理的事件可能以很高的速率到达,所以使用
不建议使用主操作队列
因此,您可能应该设置为默认值以外的其他值。当然,这取决于您的应用程序,但是像1.0/30.0
这样的东西可能是一个很好的开始。问题是,您在后台队列上接收更新,除了主队列之外,您无法从任何地方更新UI元素。最简单的解决方案是,只需将传递给motionManager的队列更改为主队列即可。startAccelerometerUpdatesToQueue
:
let queue = NSOperationQueue.mainQueue()
motionManager.startAccelerometerUpdatesToQueue(queue, withHandler: ...
然而,缔约国:
因为处理的事件可能以很高的速率到达,所以使用
不建议使用主操作队列
因此,您可能应该设置为默认值以外的其他值。当然,这取决于您的应用程序,但是像1.0/30.0
这样的东西可能是一个很好的开始