UICreator
安装
UICreator 通过 CocoaPods 提供。要安装它,只需将以下行添加到您的 Podfile 中:
pod 'UICreator'
类
类 | 名称 | 状态 | 描述 |
---|---|---|---|
UIViewController | UICHostingView | 用于托管 UICreator 的 View。 | |
UINavigationController | UICNavigation | 可以使用 UICNavigation.Other 进行自定义导航。 |
|
UITabController | UICTab | 定义了一个包含 UICTabItem 的标签栏来创建标签视图。 |
|
UICPage | UIPageViewController | 创建页面视图。 | |
UIView | UICSpacer | 它包含许多从 UIView 继承的属性,有助于在该组件内进行内容间距。 | |
UIStackView | UICStack | 它有两种变体 UICVStack 和 UICHStack 。 |
|
UILabel | UICLabel | 它将在屏幕上显示文本。 | |
UITextField | UICText | 是可编辑的文本。 | |
UITextView | UICScrollText | 它是一个可编辑的滚动文本。 | |
UIScrollView | UICScroll | 具有两种变体 UICVScroll 和 UICHScroll 的可滚动内容。 |
|
UIImageView | UICImage | 它将在屏幕上显示图像。 | |
UIButton | UICButton | 它是带有控件设置的视图。 | |
UICActivity | UIActivityIndicatorView | 使用 isLoading 来显示指示器。 |
|
UICPageControl | UIPageControl | 通过显示当前页面指示器来工作。 | |
-- | UICRounder | 用于设置cornerRadius 和边框布局。 |
|
-- | UICZStack | 展示多个子视图。 | |
-- | UICViewRepresentable | 用于将UIKit视图转换为UICreator视图。 | |
UITableView | UICList | 使用UICRow 、UICHeader 、UICFooter 和UICSection 来列表视图。仅实现了一些功能。 |
|
UICollectionView | UICCollection | 使用UICRow 、UICHeader 、UICFooter 和UICSection 来列表视图。可以使用UICFlow ,它使用UICollectionFlowLayout 。创建视图布局时使用layoutMaker(_:) 。仅实现了一些功能。 |
响应式对象
对象 | 状态 | 描述 |
---|---|---|
值 | 在视图中存储值。使用$ 将其转换为Relay 对象。 |
|
Relay | 用于通过sync(_:) 或next(_:) 更新视图属性。还有一些特殊的属性,如bind(to:) 、map(_:) 和flatMap(_:) 。它支持一些与布尔值相关的操作,如self.$isEnabled && self.$isEmpty ,结果为Relay。需要更多的方法来实现更多的灵活性。 |
|
属性 | 允许视图根据UIView的值改变行为。使用$ 访问将返回一个Relay 。需要在主体中的任何视图上调用dynamicProperty(_:) 进行配置。 |
UIKit包装器
对象 | 状态 | 描述 |
---|---|---|
UICOutlet | 作为一种方法在ViewCreator中存储视图的引用。通过在主体getter中的视图上调用as(_:) 方法进行配置。 |
命令式方法
大部分带回调的函数以UIView作为参数返回。
方法 | 生命周期 | 描述 |
---|---|---|
onNotRendered(_:) | 仅一次 | 当UIView将移动到父视图时,回调将被调用。 |
onRendered(_:) | 仅一次 | 当UIView移动到父视图时,它将被调用。 |
onInTheScene(_:) | 仅一次 | 当UIView移动到窗口时,它将被调用。 |
onLayout(_:) | 永远 | 当uiview布局子视图时。 |
onTrait(_:) | 永远 | 当特性改变时。 |
onAppear(_:) | 永远 | 当UIView不被隐藏或移动到层次结构时。 |
onDisappear(_:) | 永远 | 当 UIView 隐藏或退出层次结构时。 |
手势
除了调用 ViewCreator 协议中的方法外,还可以使用 on{Gesture}Maker(_:)
声明性创建手势。
UIGestureRecognized | 类 | 方法 |
---|---|---|
UITapGestureRecognized | 点击 | onTap(_:) |
-- | 触摸 | onTouch(_:) |
UIHoverGestureRecognized | 悬停 | onHover(_:) |
UILongPressGestureRecognizer | 长按 | onLongPress(_:) |
UIPanGestureRecognizer | 拖动 | onPan(_:) |
UIPinchGestureRecognizer | 捏合 | onPinch(_:) |
UIRotationGestureRecognizer | 旋转 | onRotation(_:) |
UIScreenEdgePanGestureRecognizer | 屏幕边缘拖动 | onScreenEdgePan(_:) |
UISwipeGestureRecognizer | 滑动 | onSwipe(_:) |
控制
根据视图,UIControl 在某些事件发生时调用选择器。_control 协议使来自扩展了 UIControl 的视图的事件能够提供 onEvent(_:, _:)
方法。这样,_UICText_ 就实现了 _onEditingDidEnd(_:)_ 和其他从 _UIControl_ 继承的方法。
代码示例
前往查看此存储库以了解和学习该库:[UICreator 示例](https://github.com/brennobemoura/UICreator-Examples)
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)
}
}
}
作者
brennobemoura, [email protected]
许可
UICreator 在 MIT 许可下可用。有关更多信息,请参阅 LICENSE 文件。