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
@dynamicMemberLookup
withKeyPath
es andcallAsFunction
VDDates
Date
struct provides very little functionality, any operations with dates must be implemented throughCalendar
in 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.default
andTimeZone.default
- static variables that you can change. So you can use customCalendar
in each functionOr you can set your own
default
value for all functionsVDBuilders
ArrayBuilder<T>
- result builder to create arraysComposeBuilder
SingleBuilder
UIKitIntegration
Easy integration
UIKit
elements toSwiftUI
code. This realization uses@autoclosure
s in order to avoidUIView
re-creation.§
operator createsUIKitView
,UIKitView
supports chaining to updateUIView
..uiKitViewEnvironment
modifier allows to setUIView
s properties as environments via chaining.VDLayout
SwiftUI
like syntaxis forUIKit
via function builders andchaining
VDLayout
is good for use withConstraintsOperators
, just need makeConstraints<Item>
impelemtsSubviewProtocol
UIKitEnvironment
Installation
Create a
Package.swift
file.Author
dankinsoid, voidilov@gmail.com
License
VDAnimation is available under the MIT license. See the LICENSE file for more info.