gpt4 book ai didi

ios - 如何在特定时间后在 ios 中隐藏 UICollectionView Cell。例如。半小时,7周等

转载 作者:行者123 更新时间:2023-11-29 11:53:09 25 4
gpt4 key购买 nike

我将在填充时间间隔半小时后隐藏一个单元格。如果应用程序处于未运行状态则也执行相同的操作。请帮我。提前致谢。

最佳答案

这里是函数delay,即使在后台状态下也可以帮助您处理延迟(如果时间合适,延迟将在应用程序激活后立即处理)。使用此代码,您可以在需要时轻松取消此延迟但是此解决方案不适用于应用程序未运行的情况(对于这种情况,我将提供另一种解决方案):

import Foundation
import UIKit

typealias dispatch_cancelable_closure = (_ cancel : Bool) -> Void

@discardableResult
func delay(_ time:TimeInterval, closure: @escaping ()->Void) -> dispatch_cancelable_closure? {

// DispatchQueue.main.asyncAfter(deadline: .now() + .milliseconds(Int(time * 1000))) {
// closure()
// }
//
// return nil

func dispatch_later(_ clsr:@escaping ()->Void) {
DispatchQueue.main.asyncAfter(
deadline: DispatchTime.now() + Double(Int64(time * Double(NSEC_PER_SEC))) / Double(NSEC_PER_SEC), execute: clsr)
}

var closure:(()->Void)? = closure
var cancelableClosure:dispatch_cancelable_closure?

let delayedClosure:dispatch_cancelable_closure = { cancel in
if closure != nil {
if (cancel == false) {
// DispatchQueue.main.async {
// closure?()
// }
DispatchQueue.main.async(execute: closure!)
// DispatchQueue.main.async(execute: closure as! @convention(block) () -> Void);
}
}
closure = nil
cancelableClosure = nil
}

cancelableClosure = delayedClosure

dispatch_later {
if let delayedClosure = cancelableClosure {
delayedClosure(false)
}
}

return cancelableClosure;
}

func cancel_delay(_ closureToCancel:dispatch_cancelable_closure?) {

if closureToCancel != nil {
closureToCancel!(true)
}
}

但是当你的应用程序没有运行时,你需要在应用程序进入后台之前保存你想要在 NSDefaults 中删除单元格的时间,并且当应用程序激活时你可以使用这个延迟函数来设置其余的时间(或者如果时间过期你可以立即删除单元格)

关于ios - 如何在特定时间后在 ios 中隐藏 UICollectionView Cell。例如。半小时,7周等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40277552/

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