Skip to content

Instantly share code, notes, and snippets.

@vantruong1094
vantruong1094 / BackgroundTransferSample.swift
Created May 4, 2019 16:19 — forked from toddhopkinson/BackgroundTransferSample.swift
Upload Very Large Files In Background on iOS - Alamofire.upload multipart in background
// You have a very very large video file you need to upload to a server while your app is backgrounded.
// Solve by using URLSession background functionality. I will here use Alamofire to enable multipart upload.
class Networking {
static let sharedInstance = Networking()
public var sessionManager: Alamofire.SessionManager // most of your web service clients will call through sessionManager
public var backgroundSessionManager: Alamofire.SessionManager // your web services you intend to keep running when the system backgrounds your app will use this
private init() {
self.sessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.default)
self.backgroundSessionManager = Alamofire.SessionManager(configuration: URLSessionConfiguration.background(withIdentifier: "com.lava.app.backgroundtransfer"))
class ItemsViewController: UIViewController {
@IBOutlet private weak var tableView: UITableView!
private let viewModel = ItemsViewModel()
override func viewDidLoad() {
super.viewDidLoad()
bindViewModel()
viewModel.fetchData()
}
class DataBinding<T> {
typealias Handler = (T) -> Void
private var handler: Handler?
var value: T {
didSet {
self.handler?(value)
}
}
class DataBinding<T> {
typealias Handler = (T) -> Void
private var handler: Handler?
var value: T {
didSet {
self.handler?(value)
}
}
class ItemsViewModel {
var items = DataBinding<[ItemModel]>(value: [])
var error = DataBinding<Error?>(value: nil)
func numberItems() -> Int {
return items.value.count
}
func fetchData() {
import Bond
import ReactiveKit
class UserProfileViewModel {
let refreshing = Observable<Bool>(false)
let username = Observable<String>("")
let photos = Observable<[Photos]>([])
private let userViewModel: UserViewModel
private let photosViewModel: PhotosViewModel
var mediaJSON = { "categories" : [ { "name" : "Movies",
"videos" : [
{ "description" : "Big Buck Bunny tells the story of a giant rabbit with a heart bigger than himself. When one sunny day three rodents rudely harass him, something snaps... and the rabbit ain't no bunny anymore! In the typical cartoon tradition he prepares the nasty rodents a comical revenge.\n\nLicensed under the Creative Commons Attribution license\nhttp://www.bigbuckbunny.org",
"sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4" ],
"subtitle" : "By Blender Foundation",
"thumb" : "images/BigBuckBunny.jpg",
"title" : "Big Buck Bunny"
},
{ "description" : "The first Blender Open Movie from 2006",
"sources" : [ "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ElephantsDream.mp4" ],
@vantruong1094
vantruong1094 / PhotoView.swift
Created July 11, 2022 10:28 — forked from ricardo0100/PhotoView.swift
Photo View with zoom and edges control in SwiftUI
import SwiftUI
struct PhotoView: View {
@State var scale: CGFloat = 1
@State var scaleAnchor: UnitPoint = .center
@State var lastScale: CGFloat = 1
@State var offset: CGSize = .zero
@State var lastOffset: CGSize = .zero
@State var debug = ""
import SwiftUI
struct TabBarDemo: View {
@StateObject var tabItems = TabItems()
var body: some View {
ZStack {
///View1
NavigationView {
ZStack {
//
// ContentView.swift
// ios14-demo
//
// Created by Prafulla Singh on 23/6/20.
//
import SwiftUI
struct ChipsDataModel: Identifiable {
let id = UUID()