UICreator 1.1.1

UICreator 1.1.1

Maintained by Brenno de Moura.



UICreator 1.1.1

  • By
  • brennobemoura

UICreator

Swift Version License Platform

Installation

UICreator is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'UICreator'

Classes

Class Name Status Description
UIViewController UICHostingView It is used to host UICreator's View.
UINavigationController UICNavigation It can be used the UICNavigation.Other to use custom navigations.
UITabController UICTab Defines a tab bar with UICTabItem to create the tab views.
UICPage UIPageViewController 🟡 Create page views.
UIView UICSpacer It contains a lot of properties from UIView and helps spacing content inside of it.
UIStackView UICStack It has two variation UICVStack and UICHStack.
UILabel UICLabel It shows the text on the screen.
UITextField UICText Is a text that can be edited.
UITextView UICScrollText It is a scrollable text that can be edited.
UIScrollView UICScroll Scrollable content with two variation UICVScroll and UICHScroll.
UIImageView UICImage It shows the image on the screen.
UIButton UICButton It is a view with control settings.
UICActivity UIActivityIndicatorView Use the isLoading to show the indicator.
UICPageControl UIPageControl Works by showing indicator to actual page.
-- UICRounder It is used to set cornerRadius and border layout
-- UICZStack It shows more than one child view.
-- UICViewRepresentable It is used to make UIKit view a UICreator view.
UITableView UICList 🟡 It list views using UICRow, UICHeader, UICFooter and UICSection. Only some features are implemented.
UICollectionView UICCollection It list view using UICRow, UICHeader, UICFooter and UICSection. It can be used UICFlow that uses UICollectionFlowLayout. To create the layout to views, use layoutMaker(_:). Only some features are implemented.

Reactive Objects

Object Status Description
Value Store value inside view. Using the $ it will turn into a Relay object.
Relay 🟡 It is used to update view property with sync(_:) or next(_:). There are other special properties like bind(to:), map(_:) and flatMap(_:). It is available some operations with booleans, like self.$isEnabled && self.$isEmpty, resulting in Relay. It needs more methods to be more flexible.
Property 🟡 Allow the view to change behavior depending on value of UIView. Accessing with $ will return a Relay. It needs to be configurated by calling dynamicProperty(_:) on any view inside the body.

UIKit Wrappers

Object Status Description
UICOutlet As a way to store the reference of a view inside ViewCreator. Configurated by calling the as(_:) method on the view inside the body getter.

Imperative Methods

Most functions with callback return UIView as a parameter.

Method Life Time Description
onNotRendered(_:) Only once The callback is called when the UIView will move to superview.
onRendered(_:) Only once It is called when the UIView did move to superview.
onInTheScene(_:) Only once It is called when the UIView did move to window.
onLayout(_:) Forever When uiview layout subviews.
onTrait(_:) Forever When traits changes.
onAppear(_:) Forever When UIView is not hidden or move to hierarchy.
onDisappear(_:) Forever When UIView is hidden or quit the hierarchy.

Gestures

Besides calling the methods from ViewCreator protocol, it is allowed to declarative create gestures using the on{Gesture}Maker(_:).

UIGestureRecognized Class Method
UITapGestureRecognized Tap onTap(_:)
-- Touch onTouch(_:)
UIHoverGestureRecognized Hover onHover(_:)
UILongPressGestureRecognizer LongPress onLongPress(_:)
UIPanGestureRecognizer Pan onPan(_:)
UIPinchGestureRecognizer Pinch onPinch(_:)
UIRotationGestureRecognizer Rotation onRotation(_:)
UIScreenEdgePanGestureRecognizer ScreenEdgePan onScreenEdgePan(_:)
UISwipeGestureRecognizer Swipe onSwipe(_:)

Control

Depending on the view, UIControl works by calling the selector when some event occurs. The Control protocol enable events from view that extends UIControl and provides the onEvent(_:, _:) method. With that, UICText implements the onEditingDidEnd(_:) and other methods from UIControl.

Code Example

Go check this repository UICreator Examples to learn and test the library.

import UICreator
class LandmarkRow: UICView {
    let landmark: Landmark
	
    init(landmark: Landmark) {
        self.landmark = landmark
    }

    var body: ViewCreator {
        UICSpacer(vertical: 5) {
            UICHStack {
                UICImage(image: self.landmark.image)
                    .aspectRatio()
                    .height(equalTo: 50)
                    .content(mode: .scaleAspectFill)
                    .clipsToBounds(true)
					
                UICLabel(self.landmark.name)
                UICSpacer()
            }
            .spacing(15)
        }
    }
}

Author

brennobemoura, [email protected]

License

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