let label = UILabel()~
.text("Text")
.textColor(.red)
.font(.system(24))
.apply()
VDDates
Date struct provides very little functionality, any operations with dates must be implemented through Calendar in very unintuitive, complex and difficult to remember ways.
To simplify operations with dates, this library provides a simple and intuitive syntax.
Some examples
let afterTomorrow: Date = .today + 2.days
//or .today + .days(2)
//or Date.today.adding(2 * .day)
let difference = date2 - date1
let daysBetweenDates = difference.days
//or date2.interval(of: .day, from: date1)
let weeksBetweenDates = difference.weeks
let hours = Date().component(.hour)
//or Date().hour()
let someDate = Date(year: 1994, month: 10, day: 4)
let startOfMonth = Date().start(of: .month)
let lastMonth = Date().end(of: .year)
let lastDay = Date().end(of: .year, accuracy: .day)
let nextYear = Date().next(.year)
let nextLeapYear = Date().nearest([.month: 2, .day: 29], in: .future)?.start(of: .year)
let monthLenght = Date().count(of: .day, in: .month)
for month in (date1...date2).each(.month) {...}
let weekdayName = Date().name(of: .weekday)
if let date = Date(from: dateString, format: "dd.MM.yyyy") {...}
let dateString = Date().string("dd.MM.yyyy")
let iso860String = Date().iso860
let defaultDateString = Date().string(date: .long, time: .short)
let relativeDateString = Date().string("dd.MM.yyyy",
relative: [
.day(1): "Tomorrow",
.day(0): "Today, HH:mm",
.day(-1): "Yesterday",
.week(0): "EEEE",
.year(0): "dd.MM"
]
)
Any function contains additional parameters with default values such as:
where Calendar.default, Locale.default and TimeZone.default - static variables that you can change.
So you can use custom Calendar in each function
let dayOfMonth = Date().position(of: .day, in: .month, calendar: customCalendar)
Or you can set your own default value for all functions
Calendar.default = customCalendar
VDBuilders
ArrayBuilder<T> - result builder to create arrays
ComposeBuilder
SingleBuilder
UIKitIntegration
Easy integration UIKit elements to SwiftUI code.
This realization uses @autoclosures in order to avoid UIView re-creation. § operator creates UIKitView, UIKitView supports chaining to update UIView. .uiKitViewEnvironment modifier allows to set UIViews properties as environments via chaining.
@State var text: String
let textColor: Color
var body: some View {
VStack {
Text(text)
.foregroundColor(textColor)
UILabel()§
.text(text)
.contentPriority.horizontal.compression(.required)
UIKitView {
UILabel()
} update: { label, context in
label.text = text
}
UIImageView()
}
.uiKitViewEnvironment(for: UILabel.self)
.textColor(textColor.ui)
.tintColor(.red)
}
VDLayout
SwiftUI like syntaxis for UIKit via function builders and chaining
VDKit
Description
This repository contains useful extensions on Foundation, UIKit and SwiftUI
Usage
VDChain
Combination of
@dynamicMemberLookupwithKeyPathes andcallAsFunctionVDDates
Datestruct provides very little functionality, any operations with dates must be implemented throughCalendarin very unintuitive, complex and difficult to remember ways. To simplify operations with dates, this library provides a simple and intuitive syntax.Some examples
Any function contains additional parameters with default values such as:
where
Calendar.default,Locale.defaultandTimeZone.default- static variables that you can change. So you can use customCalendarin each functionOr you can set your own
defaultvalue for all functionsVDBuilders
ArrayBuilder<T>- result builder to create arraysComposeBuilderSingleBuilderUIKitIntegration
Easy integration
UIKitelements toSwiftUIcode. This realization uses@autoclosures in order to avoidUIViewre-creation.§operator createsUIKitView,UIKitViewsupports chaining to updateUIView..uiKitViewEnvironmentmodifier allows to setUIViews properties as environments via chaining.VDLayout
SwiftUIlike syntaxis forUIKitvia function builders andchainingVDLayoutis good for use withConstraintsOperators, just need makeConstraints<Item>impelemtsSubviewProtocolUIKitEnvironment
Installation
Create a
Package.swiftfile.Author
dankinsoid, voidilov@gmail.com
License
VDAnimation is available under the MIT license. See the LICENSE file for more info.