我想让uiviews的alpha动画化,但我似乎做不到。它的行为怪异,并表示错误的运行UI更改不推荐在后台线程上运行,但我不知道如何使它运行在主线程上。谁能帮帮我吗?我相信它跳过了第一个uiview.animate块,并在没有任何动画的情况下执行第二个块中的内容。
函数animateSemaphore(){
circleRed.alpha = 0.2
circleOrange.alpha = 0.2
circleGreen.alpha = 1
let dispatchSemaphore = DispatchSemaphore(value: 0)
let dispatchQueue = DispatchQueue.global(qos: .background)
dispatchQueue.async {
UIView.animate(withDuration: 0.5, delay: 5, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
self.circleGreen.alpha = 0.2
} completion: { (_) in
print("1")
dispatchSemaphore.signal()
}
dispatchSemaphore.wait()
UIView.animate(withDuration: 0.5, delay: 3, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 1
} completion: { (_) in
dispatchSemaphore.signal()
}
dispatchSemaphore.wait()
UIView.animate(withDuration: 0.5, delay: 5, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
} completion: { (_) in
dispatchSemaphore.signal()
}
dispatchSemaphore.wait()
UIView.animate(withDuration: 0.5, delay: 1, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 0.2
self.circleGreen.alpha = 1
} completion: { (_) in
self.animateSemaphore()
}
}
}
您需要在主线程中插入任何与UI/Animate相关的代码,而不是在后台队列中
func animateSemaphore() {
circleRed.alpha = 0.2
circleOrange.alpha = 0.2
circleGreen.alpha = 1
UIView.animate(withDuration: 0.5, delay: 5, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
self.circleGreen.alpha = 0.2
} completion: { (_) in
UIView.animate(withDuration: 0.5, delay: 3, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 1
} completion: { (_) in
UIView.animate(withDuration: 0.5, delay: 5, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
} completion: { (_) in
UIView.animate(withDuration: 0.5, delay: 1, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 0.2
self.circleGreen.alpha = 1
} completion: { (_) in
}
}
}
}
}
或者玩延迟
而不是嵌套动画
func animateSemaphore() {
circleRed.alpha = 0.2
circleOrange.alpha = 0.2
circleGreen.alpha = 1
UIView.animate(withDuration: 0.5, delay: 5, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
self.circleGreen.alpha = 0.2
} completion: { (_) in
print("1")
}
UIView.animate(withDuration: 0.5, delay: 8.5, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 1
} completion: { (_) in
}
UIView.animate(withDuration: 0.5, delay: 14, options: .curveEaseInOut) {
self.circleOrange.alpha = 1
} completion: { (_) in
}
UIView.animate(withDuration: 0.5, delay: 15.5, options: .curveEaseInOut) {
self.circleOrange.alpha = 0.2
self.circleRed.alpha = 0.2
self.circleGreen.alpha = 1
} completion: { (_) in
}
}
问题内容: 我想获取连接到手机的另一台设备的蓝牙信号强度, 如何获得蓝牙信号强度? 我试图在Google上进行大量搜索,但未找到任何答案。 有人知道我该如何实施吗? 这是myActivity: 我的清单文件中也有蓝牙许可。 问题答案: 要获取信号,您可以检查蓝牙RSSI,可以阅读已连接设备的RSSI,或执行蓝牙发现以检查附近任何设备的RSSI。 基本上,蓝牙发现是向范围内的所有电台广播以进行响应。
问题内容: 您好,有什么方法可以使Linux中的蓝牙设备获得接近的信号强度吗?或任何适用于nodejs,php或mono的好的库(我确实知道一些c ++或python,但宁愿不使用它们)如果工具不存在,但编写起来相当容易 谢谢 问题答案: 在Linux上,可以通过hcitool命令执行此操作。但是,必须连接才能获得设备的rssi。如果要从命令行实现此目的,请尝试: 如果要查看实现此目标的实际C代码
我是一个新的Android和工作在这个聊天应用,在那里我想改变一个activity元素基于预定的数据,在预定的确切时间。它不一定要工作时,应用程序或电话关闭,但我想发送通知,以及与更改。有AlarmManager、JobScheduler、Handler、Timer和WorkManager,但我对它们之间的比较感到非常困惑。在这种情况下哪一个是最好的选择?
问题内容: 我正在使用有角度的ui-bootstrap typeahead,并且希望将其用作选择许多选项的方法,因此启动selectMatch方法时,我需要获取选定的值,但是我找不到方法在我的控制器中 如果我观看选定的值,则每按一次键都会得到更改… 我知道方法selectMatch是在用户按Enter或单击列表时调用的方法,但我不知道如何对此进行回调… 谢谢 ! 问题答案: 现在有更好的方法。添加
我有一个非常简单的DIV元素,我试图调整大小并水平拖动。它工作得很好,但是DIV元素的高度也会被jQueryUI改变。我不明白为什么。 有人有主意吗? JS代码: 超文本标记语言代码: CSS代码:
问题内容: 我正在用python编写程序。我希望阅读stdin并处理sigchld。我想处理输入中的任何一个,但不要旋转(以推测方式采样输入)。 在我进行的每个调用中,我都无法捕获被信号打断的系统调用。 我会以错误的方式处理吗?我可以不用try / except使它正常工作吗? 我主要担心的不是到目前为止的try / except。但是在程序中其他代码行中,我将需要数百人。在我看来,这似乎不是模块