Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/FabrizioBrancati/BFKit-Swift

BFKit-Swift is a collection of useful classes, structs and extensions to develop Apps faster.
https://github.com/FabrizioBrancati/BFKit-Swift

appkit bfkit bfkit-swift carthage cocoapods codebeat codecov foundation ios linux macos swift swift-3 swift-extensions swift-package-manager uikit watchkit xcode

Last synced: 22 days ago
JSON representation

BFKit-Swift is a collection of useful classes, structs and extensions to develop Apps faster.

Awesome Lists containing this project

README

        


BFKit-Swift Banner

[![Build Status](https://travis-ci.com/FabrizioBrancati/BFKit-Swift.svg?branch=master)](https://travis-ci.com/FabrizioBrancati/BFKit-Swift)
[![Coverage Status](https://coveralls.io/repos/github/FabrizioBrancati/BFKit-Swift/badge.svg?branch=master)](https://coveralls.io/github/FabrizioBrancati/BFKit-Swift?branch=master)
[![Maintainability](https://api.codeclimate.com/v1/badges/60359bcef632cb10685b/maintainability)](https://codeclimate.com/github/FabrizioBrancati/BFKit-Swift/maintainability)
[![Codebeat Badge](https://codebeat.co/badges/b8c2fc8c-73f4-4faf-b95b-85209eeaecbe)](https://codebeat.co/projects/github-com-fabriziobrancati-bfkit-swift-master)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/e414ec81c78244038cd4a26078553a00)](https://www.codacy.com/manual/FabrizioBrancati/BFKit-Swift)


[![Documentation](https://github.fabriziobrancati.com/documentation/Queuer/badge.svg)](https://github.fabriziobrancati.com/documentation/BFKit-Swift/)
[![Swift Package Manager Compatible](https://img.shields.io/badge/SPM-compatible-brightgreen.svg)](https://github.com/apple/swift-package-manager)
[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)


[![Version](https://img.shields.io/cocoapods/v/BFKit-Swift.svg?style=flat)][Documentation]
[![Language](https://img.shields.io/badge/language-Swift%205.1-orange.svg)](https://swift.org/)
[![Platforms](https://img.shields.io/badge/platforms-iOS%20%7C%20macOS%20%7C%20watchOS%20%7C%20Linux-cc9c00.svg)][Documentation]
[![License](https://img.shields.io/badge/license-MIT-lightgrey.svg)](https://github.com/FabrizioBrancati/BFKit-Swift/blob/master/LICENSE)

---


Features
Classes and Extensions Compatibility
Requirements
Communication
Contributing
Installing and Usage
Documentation
Changelog
Example
Todo
Author
License

---

Features
========

BFKit-Swift is a collection of useful classes, structs and extensions to **develop Apps faster**.

For example you can use every **iOS font with just an enum!**

It also adds some useful functions with **Custom** classes and extends **Foundation**, **UIKit**, **AppKit** and **WatchKit** classes.

Classes and Extensions Compatibility
====================================

### BFKit
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| [BFApp](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/BFApp.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [BFBiometric](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/BFBiometric.html) | ![✓] | | | |
| [BFButton](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Classes/BFButton.html) | ![✓] | | | |
| BFDataStructures
([List](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/List.html) - [Queue](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/Queue.html) - [Stack](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/Stack.html)) | ![✓] | ![✓] | ![✓] | ![✓] |
| [BFLog](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/BFLog.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [BFPassword](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/BFPassword.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [BFSystemSound](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Classes/BFSystemSound.html) | ![✓] | | | |
| [BFTextField](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Classes/BFTextField.html) | ![✓] | | | |
| [BFTouchID](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Structs/BFTouchID.html) | ![✓] | | |   |

### Foundation
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| [Array](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/Array.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Collection](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/Collection.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Data](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/Data.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Date](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/Date.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [FileManager](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/FileManager.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Number](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Functions.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [NSObject](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/NSObject.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [NSAttributedString](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/NSAttributedString.html) | ![✓] | ![✓] | ![✓] | |
| [NSPointerArray](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/NSPointerArray.html) | ![✓] | ![✓] | ![✓] | |
| [ProcessInfo](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/ProcessInfo.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Set](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/Set.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [String](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/String.html) | ![✓] | ![✓] | ![✓] | ![✓] |
| [Thread](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Functions.html) | ![✓] | ![✓] | ![✓] | ![✓] |

### Core Graphics
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| CGPoint | ![✓] | ![✓] | ![✓] |   |

### UIKit / AppKit
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| [UIBarButtonItem](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIBarButtonItem.html) | ![✓] | | | |
| [UIButton](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIButton.html) | ![✓] | | | |
| [UIColor](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIColor.html) | ![✓] | ![✓] | ![✓] | |
| [UIDevice](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIDevice.html) | ![✓] | | | |
| [UIFont](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIFont.html) | ![✓] | | ![✓] | |
| [UIImage](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIImage.html) | ![✓] | | ![✓] | |
| [UIImageView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIImageView.html) | ![✓] | | | |
| [UILabel](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UILabel.html) | ![✓] | | | |
| [UINavigationBar](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UINavigationBar.html) | ![✓] | | | |
| [UIPasteboard](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIPasteboard.html) | ![✓] | | | |
| [UIScreen](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIScreen.html) | ![✓] | | | |
| [UIScrollView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIScrollView.html) | ![✓] | | | |
| [UITableView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UITableView.html) | ![✓] | | | |
| [UITextField](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UITextField.html) | ![✓] | | | |
| [UITextView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UITextView.html) | ![✓] | | | |
| [UIToolbar](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIToolbar.html) | ![✓] | | | |
| [UIView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIView.html) | ![✓] | | | |
| [UIViewController](https://github.com/FabrizioBrancati/BFKit-Swift/blob/master/Sources/BFKit/iOS/UIKit/UIViewControllerExtension.swift) | ![✓] | | | |
| [UIWindow](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIWindow.html) | ![✓] | | |   |

### WebKit
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| [UIWebView](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/UIWebView.html) | ![✓] | ![✓] | |   |

### WatchKit
| | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------------|---------|-----------|-------------|-----------|
| [WKInterfaceController](https://github.fabriziobrancati.com/documentation/BFKit-Swift/Extensions/WKInterfaceController.html) | | | ![✓] |   |

Requirements
============

| **Swift** | **Xcode** | **BFKit-Swift** | **iOS** | **macOS** | **watchOS** | **Linux** |
|-----------|-------------|-----------------|----------|------------|-------------|-----------|
| 1.2 | 6.3 | 1.0.0...1.4.1 | 7.0+ | | | |
| 2.0...2.1 | 7.0 | 1.5.0...1.6.2 | 7.0+ | | | |
| 2.2 | 7.3 | 1.6.3...1.7.0 | 7.0+ | | | |
| 2.3 | 8.0 | 1.8.0 | 7.0+ | | | |
| 3.0...3.1 | 8.0...8.3 | 2.0.0...2.3.0 | 8.0+ | | | ![✓] |
| 3.0...3.1 | 8.0...8.3 | 2.4.0...2.5.0 | 8.0+ | | 2.0+ | ![✓] |
| 3.0...3.2 | 8.0...9.0 | 2.6.0 | 8.0+ | 10.10+ | 2.0+ | ![✓] |
| 4.0 | 9.0...9.2 | 3.0.0...3.1.1 | 8.0+ `*` | 10.10+ `*` | 3.0+ `*` | ![✓] |
| 4.1 | 9.3...9.4 | 3.1.2...3.2.1 | 8.0+ `*` | 10.10+ `*` | 3.0+ `*` | ![✓] |
| 4.2 | 10.0 | 4.0.0...4.1.0 | 8.0+ `*` | 10.10+ `*` | 3.0+ `*` | ![✓] |
| 5.0 | 10.2...10.3 | 5.0.0 | 8.0+ `*` | 10.10+ `*` | 3.0+ `*` | ![✓] |
| 5.1 | 11.2 | 6.0.0...6.0.1 | 8.0+ `*` | 10.10+ `*` | 3.0+ `*` | ![✓] |

> `*` With App Extension Support

Communication
=============

- If you need help, open an issue
- If you found a bug, open an issue.
- If you have a feature request, open an issue.
- If you want to contribute, see [Contributing](https://github.com/FabrizioBrancati/BFKit-Swift#contributing) section.

Contributing
============

See [CONTRIBUTING.md](https://github.com/FabrizioBrancati/BFKit-Swift/blob/master/.github/CONTRIBUTING.md) file.

Installing and Usage
====================

See [Requirements](https://github.com/FabrizioBrancati/BFKit-Swift#requirements) section to check Swift, Xcode, BFKit-Swift and OS versions.

### Manual
- Open and build the framework from the project (**BFKit.xcodeproj**)
- Import BFKit.framework into your project
- Import the framework with ```import BFKit```
- Enjoy!

### CocoaPods
- Create a **Podfile** in your **project directory** and write into:

```ruby
platform :ios, '8.0'
xcodeproj 'Project.xcodeproj'
use_frameworks!

pod 'BFKit-Swift'
```
- Change **"Project"** with your **real project name**
- Open **Terminal**, go to your **project directory** and type: ```pod install```
- Import the framework with ```import BFKit```
- Enjoy!

### Carthage
- Create a **Cartfile** in your **project directory** and write into:

```ruby
github "FabrizioBrancati/BFKit-Swift"
```
- Open **Terminal**, go to **project directory** and type: ```carthage update```
- **Include the created Framework** in your project
- **Add Build Phase** with the following contents:

```sh
/usr/local/bin/carthage copy-frameworks
```

Add the paths to the BFKit-Swift framework under **Input Files**

```sh
$(SRCROOT)/Carthage/Build/iOS/BFKit.framework
```

Add the paths to the copied frameworks to the **Output Files**

```sh
$(BUILT_PRODUCTS_DIR)/$(FRAMEWORKS_FOLDER_PATH)/BFKit.framework
```

This script works around an [App Store submission bug](http://www.openradar.me/radar?id=6409498411401216) triggered by universal binaries and ensures that necessary bitcode-related files are copied when archiving
- **(Optional)** Add Build Phase with the following contents

```sh
/usr/local/bin/carthage outdated --xcode-warnings
```

To automatically warn you when one of your dependencies is out of date
- Import the framework with ```import BFKit```
- Enjoy!

### Swift Package Manager
- Create a **Package.swift** file in your **project directory** and write into:

```swift
// swift-tools-version:5.1
import PackageDescription

let package = Package(
name: "Project",
products: [
.executable(name: "Project", targets: ["Project"])
],
dependencies: [
.package(url: "https://github.com/FabrizioBrancati/BFKit-Swift.git", .upToNextMajor(from: "4.0.0"))
],
targets: [
.target(name: "Project", dependencies: ["BFKit"])
]
)
```
- Change **"Project"** with your **real project name**
- Open **Terminal**, go to **project directory** and type: ```swift build```
- Import the framework with ```import BFKit```
- Enjoy!

Documentation
=============

### [Documentation]
Jazzy generated documentation - 100% Documented

Changelog
=========

To see what has changed in recent versions of BFKit-Swift, see the **[CHANGELOG.md](https://github.com/FabrizioBrancati/BFKit-Swift/blob/master/CHANGELOG.md)** file.

Example
=======

Open and run the BFKitExample project in Example folder in this repo with Xcode and see BFKit-Swift in action!

Todo
====

- [ ] Add tvOS support
- [ ] Create a new Example App that shows all the functionalities of BFKit-Swift
- [ ] ~100% of code coverage with Unit Tests
- [ ] Improve code to get an _A_ from codebeat
- [x] Add macOS support
- [x] Add watchOS support
- [x] Create Unit Tests and add Codecov badge
- [x] Add Linux support (Foundation extensions only)
- [x] Add Carthage support
- [x] Add to CocoaPods
- [x] Create a great documentation

Author
======

**Fabrizio Brancati**

[Website: https://www.fabriziobrancati.com](https://www.fabriziobrancati.com)


[Email: [email protected]](mailto:[email protected])

License
=======

BFKit-Swift is available under the MIT license. See the **[LICENSE](https://github.com/FabrizioBrancati/BFKit-Swift/blob/master/LICENSE)** file for more info.

[Documentation]: https://github.fabriziobrancati.com/documentation/BFKit-Swift/
[✓]: Resources/Check.png