Add project files
This commit is contained in:
parent
e1813ffaa6
commit
2473cf950c
|
@ -0,0 +1,40 @@
|
|||
# SPM defaults
|
||||
.DS_Store
|
||||
/.build
|
||||
/Packages
|
||||
.swiftpm/
|
||||
|
||||
# Build generated
|
||||
build/
|
||||
DerivedData/
|
||||
|
||||
# Various settings
|
||||
*.pbxuser
|
||||
!default.pbxuser
|
||||
*.mode1v3
|
||||
!default.mode1v3
|
||||
*.mode2v3
|
||||
!default.mode2v3
|
||||
*.perspectivev3
|
||||
!default.perspectivev3
|
||||
|
||||
# Other
|
||||
*.moved-aside
|
||||
*.xccheckout
|
||||
*.xcscmblueprint
|
||||
|
||||
# Obj-C/Swift specific
|
||||
*.hmap
|
||||
*.ipa
|
||||
*.dSYM.zip
|
||||
*.dSYM
|
||||
|
||||
# Bundler
|
||||
.bundle
|
||||
|
||||
# Fastlane
|
||||
Fastlane/report.xml
|
||||
Fastlane/Preview.html
|
||||
Fastlane/screenshots
|
||||
Fastlane/test_output
|
||||
Fastlane/README.md
|
|
@ -0,0 +1,8 @@
|
|||
disabled_rules:
|
||||
- trailing_whitespace
|
||||
- type_name
|
||||
- vertical_whitespace
|
||||
|
||||
included:
|
||||
- Sources
|
||||
- Tests
|
|
@ -0,0 +1,24 @@
|
|||
# Run `pod lib lint SwiftKit.podspec' to ensure this is a valid spec.
|
||||
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'DSSwiftKit'
|
||||
s.version = '0.1.0'
|
||||
s.swift_versions = ['5.2']
|
||||
s.summary = 'SwiftKit contains extra functionality for Swift.'
|
||||
|
||||
s.description = <<-DESC
|
||||
SwiftKit contains extra functionality for Swift, like extensions, utils etc.
|
||||
DESC
|
||||
|
||||
s.homepage = 'https://github.com/danielsaidi/SwiftKit'
|
||||
s.license = { :type => 'MIT', :file => 'LICENSE' }
|
||||
s.author = { 'Daniel Saidi' => 'daniel.saidi@gmail.com' }
|
||||
s.source = { :git => 'https://github.com/danielsaidi/SwiftKit.git', :tag => s.version.to_s }
|
||||
s.social_media_url = 'https://twitter.com/danielsaidi'
|
||||
|
||||
s.swift_version = '5.2'
|
||||
s.ios.deployment_target = '11.0'
|
||||
s.tvos.deployment_target = '13.0'
|
||||
s.watchos.deployment_target = '6.0'
|
||||
s.source_files = 'Sources/**/*.swift'
|
||||
end
|
|
@ -0,0 +1,31 @@
|
|||
fastlane_version "2.129.0"
|
||||
|
||||
default_platform :ios
|
||||
|
||||
platform :ios do
|
||||
|
||||
desc "Create a new version"
|
||||
lane :version do |options|
|
||||
ensure_git_status_clean
|
||||
ensure_git_branch(branch: 'master')
|
||||
|
||||
bump_type = options[:type]
|
||||
if bump_type == nil or bump_type.empty?
|
||||
bump_type = "patch"
|
||||
end
|
||||
|
||||
version = version_bump_podspec(path: "DSSwiftKit.podspec", bump_type: bump_type)
|
||||
increment_version_number(version_number: version)
|
||||
|
||||
git_commit(
|
||||
path: "*",
|
||||
message: "Bump to #{version}"
|
||||
)
|
||||
|
||||
add_git_tag(tag: version)
|
||||
push_git_tags()
|
||||
push_to_git_remote()
|
||||
pod_push()
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2020 Daniel Saidi
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
|
@ -0,0 +1,27 @@
|
|||
// swift-tools-version:5.1
|
||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
|
||||
|
||||
import PackageDescription
|
||||
|
||||
let package = Package(
|
||||
name: "SwiftKit",
|
||||
platforms: [
|
||||
.iOS(.v11),
|
||||
.tvOS(.v13)
|
||||
.watchOS(.v13)
|
||||
],
|
||||
products: [
|
||||
.library(
|
||||
name: "SwiftKit",
|
||||
targets: ["SwiftKit"]),
|
||||
],
|
||||
dependencies: [],
|
||||
targets: [
|
||||
.target(
|
||||
name: "SwiftKit",
|
||||
dependencies: []),
|
||||
.testTarget(
|
||||
name: "SwiftKitTests",
|
||||
dependencies: ["SwiftKit"]),
|
||||
]
|
||||
)
|
82
README.md
82
README.md
|
@ -1,2 +1,80 @@
|
|||
# SwiftKit
|
||||
SwiftUIKit contains additional functionality for Swift.
|
||||
<p align="center">
|
||||
<img src ="Resources/Logo.png" width=500 />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://github.com/danielsaidi/SwiftKit">
|
||||
<img src="https://badge.fury.io/gh/danielsaidi%2FSwiftKit.svg?style=flat" alt="Version" />
|
||||
</a>
|
||||
<img src="https://img.shields.io/badge/platform-SwiftUI-red.svg" alt="Swift UI" />
|
||||
<img src="https://img.shields.io/badge/Swift-5.1-orange.svg" alt="Swift 5.1" />
|
||||
<img src="https://badges.frapsoft.com/os/mit/mit.svg?style=flat&v=102" alt="License" />
|
||||
<a href="https://twitter.com/danielsaidi">
|
||||
<img src="https://img.shields.io/badge/contact-@danielsaidi-blue.svg?style=flat" alt="Twitter: @danielsaidi" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
|
||||
## About SwiftKit
|
||||
|
||||
`SwiftKit` adds functionality to `Swift`, both extensions to existing types and components, as well as custom useful functionality.
|
||||
|
||||
You can read more about the different parts of `SwiftKit` in separate readmes:
|
||||
|
||||
* [Extensions][Extensions]
|
||||
|
||||
If things that exist in this library are added to `Swift`, the corresponding functionality in this library will be deprecated and refer to those new features.
|
||||
|
||||
|
||||
## Demo App
|
||||
|
||||
This project contains a demo app that shows all available system blur styles. To run the demo app, just open and run the `SwiftKit.xcodeproj` project.
|
||||
|
||||
|
||||
## Installation
|
||||
|
||||
### Swift Package Manager
|
||||
|
||||
```
|
||||
https://github.com/danielsaidi/SwiftKit.git
|
||||
```
|
||||
|
||||
### CocoaPods
|
||||
|
||||
```
|
||||
pod DSSwiftKit
|
||||
```
|
||||
|
||||
|
||||
## <a name="why"></a>Why a big "Kit"?
|
||||
|
||||
Having a big "kit" is a bad idea, since it may become too generic and hard to overview. For instance, if I want to modify dates, I'm probably not going to dig around in SwiftKit looking for extensions, but rather use the best single-purpose date library.
|
||||
|
||||
The GitHub stars confirm this as well. Many years ago, I started putting reusable iOS functionality into a library I call [iExtra](https://github.com/danielsaidi/iExtra). I think it's an amazing library and I use it in most of my apps. To this day, it has 12 stars.
|
||||
|
||||
However, each project comes with overhead. If I decided to create a new library for each little thing I make, I'd spend a lot of time setting up each new project. There are funny names to come up with, icons and logos to be made, maintenance etc.
|
||||
|
||||
SO instead of honoring every little idea with a new library, I'm going to put most here until they are either too large or too good to be a part of this library. When that happens, they'll break out of their little cage and move into a library of their own.
|
||||
|
||||
|
||||
## Contact me
|
||||
|
||||
Feel free to reach out if you have questions or if you want to contribute in any way:
|
||||
|
||||
* E-mail: [daniel.saidi@gmail.com][Email]
|
||||
* Twitter: [@danielsaidi][Twitter]
|
||||
* Web site: [danielsaidi.com][Website]
|
||||
|
||||
|
||||
## License
|
||||
|
||||
SwiftKit is available under the MIT license. See [LICENSE][License] file for more info.
|
||||
|
||||
[Email]: mailto:daniel.saidi@gmail.com
|
||||
[Twitter]: http://www.twitter.com/danielsaidi
|
||||
[Website]: http://www.danielsaidi.com
|
||||
|
||||
[GitHub]: https://github.com/danielsaidi/SwiftKit
|
||||
[License]: https://github.com/danielsaidi/SwiftKit/blob/master/LICENSE
|
||||
|
||||
[Extensions]: Readmes/Extensions.md
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
# Extension
|
||||
|
||||
`SwiftKit` contains additional logic in the form of extensions to native `Swift` types.
|
||||
|
||||
Since this namespace will probably grow much and fast, extensions are not listed or described here. Instead, have a look at the source code to see what kind of extensions this library contains. They should all be pretty well documented.
|
|
@ -0,0 +1,84 @@
|
|||
# Release notes
|
||||
|
||||
|
||||
## 0.5.0
|
||||
|
||||
This release adds:
|
||||
|
||||
* An `ImagePicker` that can be used to present a `UIImagePickerController`.
|
||||
* An `FilePicker` that can be used to present a `UIDocumentPickerViewController`.
|
||||
* An `ShareSheet` that can be used to present a `UIActivityViewController`.
|
||||
* An `UserDefaultsPersisted` property wrapper that lets you persist data to `UserDefaults`.
|
||||
|
||||
|
||||
## 0.4.1
|
||||
|
||||
This release changes the `View` geometry extensions and replaces `bindGeometry(to: ...)` with:
|
||||
|
||||
* `bindSafeAreaInsets(to: ...)`
|
||||
* `bindSize(to: ...)`
|
||||
|
||||
You can use them like this:
|
||||
|
||||
```swift
|
||||
@State private var size: CGSize = .zero
|
||||
@State private var size: CGSize = .zero
|
||||
UIColor.red.bindGeometry(to: $height) { $0.size.height }
|
||||
```
|
||||
|
||||
|
||||
## 0.4.0
|
||||
|
||||
This release adds a new geometry `View` extension:
|
||||
|
||||
* `bindGeometry(to: ...)` lets you bind any `CGFloat` geometry value for a view.
|
||||
|
||||
The extension injects a `GeometryReader` and provides values to the provided binding.
|
||||
|
||||
|
||||
## 0.3.0
|
||||
|
||||
This release adds some new toast features:
|
||||
|
||||
* `ToastContext` is an observable object can be used to manage a view's toast.
|
||||
* `ToastStyle` is a new struct that contains all available styles for a toast.
|
||||
|
||||
This release makes some small api changes:
|
||||
|
||||
* The `SwipeGesture` initializer has been made public.
|
||||
* `Toast` now uses `ToastStyle` instead of separate style properties.
|
||||
* The `Toast` extensions now require you to specify a background.
|
||||
* The text-based `Toast` extension automatically centers the text.
|
||||
|
||||
|
||||
## 0.2.1
|
||||
|
||||
This release adds a new `FontIdentifier`.
|
||||
|
||||
It can be implemented by any font provider, e.g. `SwiftGen`s `FontConvertible`.
|
||||
|
||||
|
||||
## 0.2.0
|
||||
|
||||
This release adds new style structs:
|
||||
|
||||
* `CornerRadiusStyle` style can be used to specify corner radii.
|
||||
* `FontStyle` style can be used to specify custom fonts.
|
||||
* `ShadowStyle` style can be used to specify drop shadow styles.
|
||||
|
||||
These view modifiers simplifies using these styles:
|
||||
|
||||
* `cornerRadius(_ style:)` can be used to apply a `CornerRadiusStyle`.
|
||||
* `font(_ style: FontStyle)` can be used to apply a `FontStyle`.
|
||||
* `font(name:, style:, weight:)` can also be used to apply custom fonts.
|
||||
* `shadow(_ style:)` can be used to apply a `ShadowStyle`.
|
||||
|
||||
The release also adds new view extensions:
|
||||
|
||||
* `blur(...)` simplifies using the system blur styles that are specified in this library.
|
||||
* `border(content:,width:,cornerRadius:)` can be used to apply borders with a certain content (e.g. Color.red), width and corner radius.
|
||||
|
||||
|
||||
## 0.1.0
|
||||
|
||||
This is the very first release of SwiftUIKit. It contains a bunch of features, which are described in the readme.
|
Binary file not shown.
Binary file not shown.
After Width: | Height: | Size: 292 KiB |
Binary file not shown.
|
@ -0,0 +1,3 @@
|
|||
struct SwiftKit {
|
||||
var text = "Hello, World!"
|
||||
}
|
|
@ -0,0 +1,7 @@
|
|||
import XCTest
|
||||
|
||||
import SwiftKitTests
|
||||
|
||||
var tests = [XCTestCaseEntry]()
|
||||
tests += SwiftKitTests.allTests()
|
||||
XCTMain(tests)
|
|
@ -0,0 +1,15 @@
|
|||
import XCTest
|
||||
@testable import SwiftKit
|
||||
|
||||
final class SwiftKitTests: XCTestCase {
|
||||
func testExample() {
|
||||
// This is an example of a functional test case.
|
||||
// Use XCTAssert and related functions to verify your tests produce the correct
|
||||
// results.
|
||||
XCTAssertEqual(SwiftKit().text, "Hello, World!")
|
||||
}
|
||||
|
||||
static var allTests = [
|
||||
("testExample", testExample),
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
import XCTest
|
||||
|
||||
#if !canImport(ObjectiveC)
|
||||
public func allTests() -> [XCTestCaseEntry] {
|
||||
return [
|
||||
testCase(SwiftKitTests.allTests),
|
||||
]
|
||||
}
|
||||
#endif
|
Loading…
Reference in New Issue