gpt4 book ai didi

ios - 如何使 Asynctask 中的 UIView 无效(swift,ios)

转载 作者:行者123 更新时间:2023-11-28 13:14:14 25 4
gpt4 key购买 nike

我有一个带有背景颜色的 UIView。

@IBOutlet var timelineview: 时间线 View !

现在我想用一个 Asynctask 改变 UIView 的背景颜色,它应该每秒改变 UIView 的背景颜色。

    dispatch_async(dispatch_get_main_queue()) {
for var i=10;i<100;i++ {
println(i);
var iRed:CGFloat=CGFloat(i)/CGFloat(10.0);
var backgroundColor:UIColor=UIColor(red: iRed, green: iRed, blue: iRed, alpha: 0.5);
self.timelineview.backgroundColor = backgroundColor;
sleep(1);
}
}

这只是一个示例,用于了解如何从后台任务调用对 GUI 的更改。在 Android 中,这是通过更新 GUI 的处理程序完成的。我不知道 IOS 中的概念。

有什么帮助吗?

最佳答案

您实际上要寻找的不是调度队列,而是可以使用 GCD 的 dispatch_source_create 方法创建的计时器,如下所示:

dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main-queue());

//start timer
if (timer) {
dispatch_source_set_timer(timer, DISPATCH_TIME_NOW, interval * NSEC_PER_SEC, 0.0 * NSEC_PER_SEC);
dispatch_source_set_event_handler(timer, ^{
// set background color or any other UI code here
});
dispatch_resume(timer);
}

interval 是计时器应该触发的时间间隔(以秒为单位)(1.0 适合您)要停止计时器,请使用:

dispatch_source_cancel(timer);
timer = NULL;

对不起,我是一个普通的 Objective C 老手,对 Swift 不太熟悉。但是您可能会明白这个概念。

关于ios - 如何使 Asynctask 中的 UIView 无效(swift,ios),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com