1
我會從填充時間後半小時的時間間隔隱藏一個單元格。如果應用程序處於未運行狀態,那麼也執行相同的操作。請幫幫我。提前致謝。如何在特定時間後在ios中隱藏UICollectionView Cell。例如。半小時,7周等
我會從填充時間後半小時的時間間隔隱藏一個單元格。如果應用程序處於未運行狀態,那麼也執行相同的操作。請幫幫我。提前致謝。如何在特定時間後在ios中隱藏UICollectionView Cell。例如。半小時,7周等
以下是功能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中刪除單元格的時間,並且當應用程序變爲活動狀態時,您可以使用此延遲功能來設置其餘時間(或者如果時間已過期可以靈活移除細胞)
您可以在規定的時間後使用nsnotification啓動功能。 –