Skip to content

Instantly share code, notes, and snippets.

View Pircate's full-sized avatar
:octocat:
Focusing

Xiang Pircate

:octocat:
Focusing
  • Huami
  • Hefei, China
View GitHub Profile
typealias ObservableType = Publisher
typealias ObserverType = Subscriber
typealias Observable<Element> = AnyPublisher<Element, Error>
typealias Observer<Element, Failure: Error> = AnySubscriber<Element, Failure>
extension ObservableType {
//
// CleanJSON.swift
// CleanJSON
//
// Created by Pircate on 2018/5/3.
// Copyright © 2018年 Pircate. All rights reserved.
//
import Foundation
import SnapKit
public struct ConstraintViewControllerDSL {
fileprivate let base: UIViewController
init(_ base: UIViewController) {
self.base = base
}
}
#import "NSNumber+Countdown.h"
@implementation NSNumber (Countdown)
- (dispatch_source_t)countdownWithInterval:(NSTimeInterval)interval
executing:(void (^)(NSTimeInterval))executing
completion:(void (^)(void))completion {
__block NSTimeInterval timeout = self.doubleValue;
dispatch_source_t timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_global_queue(0, 0));
dispatch_source_set_timer(timer, dispatch_walltime(NULL, 0), interval * NSEC_PER_SEC, 0 * NSEC_PER_SEC);
extension UITextInput where Self: UIView {
func avoidCoveredByKeyboard(
from view: UIView,
_ offset: CGFloat = 0
) {
NotificationCenter.default.addObserver(
forName: UIApplication.keyboardWillShowNotification,
object: nil,
queue: .main
@Pircate
Pircate / ReferenceBox.swift
Last active July 6, 2020 14:45
ReferenceBox
public class ReferenceBox<Value: Codable>: Codable {
public var value: Value
required public init(from decoder: Decoder) throws {
let container = try decoder.singleValueContainer()
self.value = try container.decode(Value.self)
}
public func encode(to encoder: Encoder) throws {
@Pircate
Pircate / MovableCollectionView.swift
Last active November 9, 2018 06:39
MovableCollectionView
//
// MovableCollectionView.swift
// MovableCollectionView
//
// Created by Pircate on 2018/9/6.
// Copyright © 2018年 Pircate. All rights reserved.
//
import UIKit