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

https://github.com/simplisticated/visuality

Simplifying work with views in Swift
https://github.com/simplisticated/visuality

nib uikit uiview uiview-extension uiviewcontroller

Last synced: 12 months ago
JSON representation

Simplifying work with views in Swift

Awesome Lists containing this project

README

          


Visuality




## At a Glance

`Visuality` helps you to create view or view controller instance with NIB by one line of code. This is the main purpose of this library. Actually, there's a lot more features!

## How To Get Started

- Copy content of `Source` folder to your project.

or

- Use Swift package manager.

## Requirements

* iOS 9 and later
* Xcode 9 and later
* Swift 4

## Usage

### Views

To create new `UIView` instance, you have to use `.from()` static method:

```swift
MyView.from(nib: , inBundle: )
```

Nib query can be one of the following values:

- `byNibName("MyView")` - loads NIB with custom name
- `byClassName` - loads NIB with name of view class
- `byClassNameWithSuffix()` - loads NIB with name of view class and suffix
- `none` - loads view without NIB

List of available suffixes for NIB name:

- `_iPhone`
- `_iPad`
- `custom("suffix")`

Bundle query defines the bundle containing required NIB. Possible values are:

- `main` - main bundle
- `byInstance(bundle)` - requires instance of `Bundle` type
- `byIdentifier("com.example.App")` - requires bundle identifier

So, if you need to initialize a view of `MyView` type with same-named NIB file located in main bundle, you can simply write:

```swift
let view = MyView.from(nib: .byClassName, inBundle: .main)
```

### View Controllers

Initialization of view controller instances is very similar to view's initialization, but there's one more parameter:

```swift
let viewController = MyViewController.from(nib: .byClassName, inBundle: .main, loadView: true)
```

The last parameter `loadView` is a boolean value defining whether view should be loaded immediately after view controller's instantiation. In most cases you don't need to load view immediately, but, sometimes, this is a quite helpful option.

By default, `loadView` is `false`, so, if you don't need to load view controller's view immediately, you can avoid mentioning this parameter:

```swift
let viewController = MyViewController.from(nib: .byClassName, inBundle: .main)
```

In this case view will be loaded right before displaying on the screen.

## License

`Visuality` is available under the MIT license. See the `LICENSE` file for more info.