├── Example ├── OCUIExample │ ├── Pods │ │ ├── Headers │ │ │ ├── Private │ │ │ │ ├── Masonry │ │ │ │ │ ├── Masonry.h │ │ │ │ │ ├── MASUtilities.h │ │ │ │ │ ├── MASConstraint.h │ │ │ │ │ ├── MASViewAttribute.h │ │ │ │ │ ├── MASViewConstraint.h │ │ │ │ │ ├── View+MASAdditions.h │ │ │ │ │ ├── MASConstraintMaker.h │ │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ │ ├── NSArray+MASAdditions.h │ │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ │ ├── MASConstraint+Private.h │ │ │ │ │ ├── View+MASShorthandAdditions.h │ │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ ├── DriverListNode │ │ │ │ │ ├── DriverList.h │ │ │ │ │ ├── DriverNode.h │ │ │ │ │ ├── DriverGroup.h │ │ │ │ │ ├── DriverListNode.h │ │ │ │ │ ├── ZHTableViewCell.h │ │ │ │ │ ├── DriverDataSource.h │ │ │ │ │ ├── ZHTableViewGroup.h │ │ │ │ │ ├── DriverBlockContent.h │ │ │ │ │ ├── ZHCollectionViewCell.h │ │ │ │ │ ├── ZHTableViewBaseModel.h │ │ │ │ │ ├── ZHTableViewGroupObjc.h │ │ │ │ │ ├── ZHCollectionViewGroup.h │ │ │ │ │ ├── ZHTableViewDataSource.h │ │ │ │ │ ├── ZHCollectionViewBaseModel.h │ │ │ │ │ ├── ZHTableViewHeaderFooter.h │ │ │ │ │ ├── ZHCollectionViewDataSource.h │ │ │ │ │ ├── ZHCollectionViewHeaderFooter.h │ │ │ │ │ ├── ZHAutoConfigurationTableViewDelegate.h │ │ │ │ │ ├── UITableView+ZHTableViewDataSource.h │ │ │ │ │ ├── ZHAutoConfigurationCollectionViewDelegate.h │ │ │ │ │ └── UICollectionView+ZHCollectionViewDataSource.h │ │ │ │ └── CombineObjectObjc │ │ │ │ │ ├── CombineKey.h │ │ │ │ │ ├── CombineBind.h │ │ │ │ │ ├── CombineValue.h │ │ │ │ │ ├── CombineView.h │ │ │ │ │ ├── CombineWeakView.h │ │ │ │ │ ├── CombineWeakValue.h │ │ │ │ │ ├── CombineView+Category.h │ │ │ │ │ ├── NSObject+CombineBind.h │ │ │ │ │ └── CombineValue+Category.h │ │ │ └── Public │ │ │ │ ├── Masonry │ │ │ │ ├── Masonry.h │ │ │ │ ├── MASConstraint.h │ │ │ │ ├── MASUtilities.h │ │ │ │ ├── MASConstraintMaker.h │ │ │ │ ├── MASViewAttribute.h │ │ │ │ ├── MASViewConstraint.h │ │ │ │ ├── View+MASAdditions.h │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ ├── NSArray+MASAdditions.h │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ ├── MASConstraint+Private.h │ │ │ │ ├── View+MASShorthandAdditions.h │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ ├── DriverListNode │ │ │ │ ├── DriverList.h │ │ │ │ ├── DriverNode.h │ │ │ │ ├── DriverGroup.h │ │ │ │ ├── DriverListNode.h │ │ │ │ ├── ZHTableViewCell.h │ │ │ │ ├── DriverBlockContent.h │ │ │ │ ├── DriverDataSource.h │ │ │ │ ├── ZHTableViewGroup.h │ │ │ │ ├── ZHCollectionViewCell.h │ │ │ │ ├── ZHTableViewBaseModel.h │ │ │ │ ├── ZHTableViewGroupObjc.h │ │ │ │ ├── ZHCollectionViewGroup.h │ │ │ │ ├── ZHTableViewDataSource.h │ │ │ │ ├── ZHTableViewHeaderFooter.h │ │ │ │ ├── ZHCollectionViewBaseModel.h │ │ │ │ ├── ZHCollectionViewDataSource.h │ │ │ │ ├── ZHCollectionViewHeaderFooter.h │ │ │ │ ├── UITableView+ZHTableViewDataSource.h │ │ │ │ ├── ZHAutoConfigurationTableViewDelegate.h │ │ │ │ ├── ZHAutoConfigurationCollectionViewDelegate.h │ │ │ │ └── UICollectionView+ZHCollectionViewDataSource.h │ │ │ │ └── CombineObjectObjc │ │ │ │ ├── CombineBind.h │ │ │ │ ├── CombineKey.h │ │ │ │ ├── CombineView.h │ │ │ │ ├── CombineValue.h │ │ │ │ ├── CombineWeakValue.h │ │ │ │ ├── CombineWeakView.h │ │ │ │ ├── CombineValue+Category.h │ │ │ │ ├── CombineView+Category.h │ │ │ │ └── NSObject+CombineBind.h │ │ ├── DriverListNode │ │ │ ├── Example │ │ │ │ └── DriverListNodeCocoPods │ │ │ │ │ ├── Pods │ │ │ │ │ ├── Headers │ │ │ │ │ │ ├── Private │ │ │ │ │ │ │ ├── Masonry │ │ │ │ │ │ │ │ ├── Masonry.h │ │ │ │ │ │ │ │ ├── MASUtilities.h │ │ │ │ │ │ │ │ ├── MASConstraint.h │ │ │ │ │ │ │ │ ├── MASViewAttribute.h │ │ │ │ │ │ │ │ ├── MASViewConstraint.h │ │ │ │ │ │ │ │ ├── View+MASAdditions.h │ │ │ │ │ │ │ │ ├── MASConstraintMaker.h │ │ │ │ │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ │ │ │ │ ├── MASConstraint+Private.h │ │ │ │ │ │ │ │ ├── NSArray+MASAdditions.h │ │ │ │ │ │ │ │ ├── View+MASShorthandAdditions.h │ │ │ │ │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ │ │ │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ │ │ │ └── DriverListNode │ │ │ │ │ │ │ │ ├── DriverList.h │ │ │ │ │ │ │ │ ├── DriverNode.h │ │ │ │ │ │ │ │ ├── DriverGroup.h │ │ │ │ │ │ │ │ ├── DriverListNode.h │ │ │ │ │ │ │ │ ├── ZHTableViewCell.h │ │ │ │ │ │ │ │ ├── DriverDataSource.h │ │ │ │ │ │ │ │ ├── ZHTableViewGroup.h │ │ │ │ │ │ │ │ ├── DriverBlockContent.h │ │ │ │ │ │ │ │ ├── ZHCollectionViewCell.h │ │ │ │ │ │ │ │ ├── ZHTableViewBaseModel.h │ │ │ │ │ │ │ │ ├── ZHTableViewGroupObjc.h │ │ │ │ │ │ │ │ ├── ZHCollectionViewGroup.h │ │ │ │ │ │ │ │ ├── ZHTableViewDataSource.h │ │ │ │ │ │ │ │ ├── ZHCollectionViewBaseModel.h │ │ │ │ │ │ │ │ ├── ZHTableViewHeaderFooter.h │ │ │ │ │ │ │ │ ├── ZHCollectionViewDataSource.h │ │ │ │ │ │ │ │ ├── ZHCollectionViewHeaderFooter.h │ │ │ │ │ │ │ │ ├── ZHAutoConfigurationTableViewDelegate.h │ │ │ │ │ │ │ │ ├── UITableView+ZHTableViewDataSource.h │ │ │ │ │ │ │ │ ├── ZHAutoConfigurationCollectionViewDelegate.h │ │ │ │ │ │ │ │ └── UICollectionView+ZHCollectionViewDataSource.h │ │ │ │ │ │ └── Public │ │ │ │ │ │ │ ├── Masonry │ │ │ │ │ │ │ ├── Masonry.h │ │ │ │ │ │ │ ├── MASUtilities.h │ │ │ │ │ │ │ ├── MASConstraint.h │ │ │ │ │ │ │ ├── MASViewAttribute.h │ │ │ │ │ │ │ ├── MASViewConstraint.h │ │ │ │ │ │ │ ├── View+MASAdditions.h │ │ │ │ │ │ │ ├── MASConstraintMaker.h │ │ │ │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ │ │ │ ├── NSArray+MASAdditions.h │ │ │ │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ │ │ │ ├── MASConstraint+Private.h │ │ │ │ │ │ │ ├── View+MASShorthandAdditions.h │ │ │ │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ │ │ │ └── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ │ │ │ └── DriverListNode │ │ │ │ │ │ │ ├── DriverList.h │ │ │ │ │ │ │ ├── DriverNode.h │ │ │ │ │ │ │ ├── DriverGroup.h │ │ │ │ │ │ │ ├── DriverListNode.h │ │ │ │ │ │ │ ├── ZHTableViewCell.h │ │ │ │ │ │ │ ├── DriverBlockContent.h │ │ │ │ │ │ │ ├── DriverDataSource.h │ │ │ │ │ │ │ ├── ZHTableViewGroup.h │ │ │ │ │ │ │ ├── ZHCollectionViewCell.h │ │ │ │ │ │ │ ├── ZHTableViewBaseModel.h │ │ │ │ │ │ │ ├── ZHTableViewGroupObjc.h │ │ │ │ │ │ │ ├── ZHCollectionViewGroup.h │ │ │ │ │ │ │ ├── ZHTableViewDataSource.h │ │ │ │ │ │ │ ├── ZHTableViewHeaderFooter.h │ │ │ │ │ │ │ ├── ZHCollectionViewBaseModel.h │ │ │ │ │ │ │ ├── ZHCollectionViewDataSource.h │ │ │ │ │ │ │ ├── ZHCollectionViewHeaderFooter.h │ │ │ │ │ │ │ ├── UITableView+ZHTableViewDataSource.h │ │ │ │ │ │ │ ├── ZHAutoConfigurationTableViewDelegate.h │ │ │ │ │ │ │ ├── ZHAutoConfigurationCollectionViewDelegate.h │ │ │ │ │ │ │ └── UICollectionView+ZHCollectionViewDataSource.h │ │ │ │ │ ├── Target Support Files │ │ │ │ │ │ ├── Masonry │ │ │ │ │ │ │ ├── Masonry-dummy.m │ │ │ │ │ │ │ ├── Masonry-prefix.pch │ │ │ │ │ │ │ └── Masonry.xcconfig │ │ │ │ │ │ ├── DriverListNode │ │ │ │ │ │ │ ├── DriverListNode-dummy.m │ │ │ │ │ │ │ ├── DriverListNode-prefix.pch │ │ │ │ │ │ │ └── DriverListNode.xcconfig │ │ │ │ │ │ └── Pods-DriverListNodeCocoPods │ │ │ │ │ │ │ ├── Pods-DriverListNodeCocoPods-dummy.m │ │ │ │ │ │ │ ├── Pods-DriverListNodeCocoPods.debug.xcconfig │ │ │ │ │ │ │ └── Pods-DriverListNodeCocoPods.release.xcconfig │ │ │ │ │ ├── Masonry │ │ │ │ │ │ ├── Masonry │ │ │ │ │ │ │ ├── MASLayoutConstraint.m │ │ │ │ │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ │ │ │ ├── Masonry.h │ │ │ │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ │ │ │ ├── MASViewAttribute.m │ │ │ │ │ │ │ ├── MASViewAttribute.h │ │ │ │ │ │ │ ├── ViewController+MASAdditions.m │ │ │ │ │ │ │ └── MASViewConstraint.h │ │ │ │ │ │ └── LICENSE │ │ │ │ │ ├── Manifest.lock │ │ │ │ │ └── Local Podspecs │ │ │ │ │ │ └── DriverListNode.podspec.json │ │ │ │ │ ├── DriverListNodeCocoPods │ │ │ │ │ ├── Assets.xcassets │ │ │ │ │ │ └── Contents.json │ │ │ │ │ ├── ViewController.h │ │ │ │ │ ├── AppDelegate.h │ │ │ │ │ ├── main.m │ │ │ │ │ ├── AutomitcHeightCell.h │ │ │ │ │ ├── DemoCollectionController.h │ │ │ │ │ ├── DemoViewController.h │ │ │ │ │ ├── DemoCollectionController.m │ │ │ │ │ ├── DemoViewController.m │ │ │ │ │ └── AutomitcHeightCell.m │ │ │ │ │ ├── Podfile │ │ │ │ │ ├── DriverListNodeCocoPods.xcodeproj │ │ │ │ │ └── project.xcworkspace │ │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ ├── DriverListNodeCocoPods.xcworkspace │ │ │ │ │ └── contents.xcworkspacedata │ │ │ │ │ └── Podfile.lock │ │ │ ├── images │ │ │ │ ├── 2019-08-20-034515.png │ │ │ │ ├── 2019-08-20-035055.png │ │ │ │ ├── image-20190820115521632.png │ │ │ │ ├── image-20190820115538881.png │ │ │ │ ├── image-20190820115647037.png │ │ │ │ └── image-20190820115743952.png │ │ │ ├── Sources │ │ │ │ └── DriverList │ │ │ │ │ ├── ZHTableViewGroupObjc.h │ │ │ │ │ ├── DriverBlockContent.m │ │ │ │ │ ├── DriverListNode.h │ │ │ │ │ ├── ZHTableViewBaseModel.m │ │ │ │ │ ├── ZHCollectionViewBaseModel.m │ │ │ │ │ ├── DriverDataSource.h │ │ │ │ │ ├── TableView │ │ │ │ │ └── UITableView+ZHTableViewDataSource.h │ │ │ │ │ ├── CollectionView │ │ │ │ │ └── UICollectionView+ZHCollectionViewDataSource.h │ │ │ │ │ ├── DriverBlockContent.h │ │ │ │ │ ├── ZHTableViewBaseModel.h │ │ │ │ │ ├── DriverGroup.h │ │ │ │ │ ├── ZHAutoConfigurationCollectionViewDelegate.h │ │ │ │ │ ├── ZHCollectionViewBaseModel.h │ │ │ │ │ ├── DriverNode.h │ │ │ │ │ ├── DriverList.h │ │ │ │ │ ├── ZHTableViewHeaderFooter.m │ │ │ │ │ └── ZHCollectionViewHeaderFooter.m │ │ │ ├── DriverListNode.podspec │ │ │ └── LICENSE │ │ ├── Target Support Files │ │ │ ├── Masonry │ │ │ │ ├── Masonry-dummy.m │ │ │ │ ├── Masonry-prefix.pch │ │ │ │ └── Masonry.xcconfig │ │ │ ├── DriverListNode │ │ │ │ ├── DriverListNode-dummy.m │ │ │ │ ├── DriverListNode-prefix.pch │ │ │ │ └── DriverListNode.xcconfig │ │ │ ├── Pods-OCUIExample │ │ │ │ ├── Pods-OCUIExample-dummy.m │ │ │ │ ├── Pods-OCUIExample.debug.xcconfig │ │ │ │ └── Pods-OCUIExample.release.xcconfig │ │ │ └── CombineObjectObjc │ │ │ │ ├── CombineObjectObjc-dummy.m │ │ │ │ ├── CombineObjectObjc-prefix.pch │ │ │ │ └── CombineObjectObjc.xcconfig │ │ ├── CombineObjectObjc │ │ │ ├── Sources │ │ │ │ └── CombineObject │ │ │ │ │ ├── CombineWeakView.m │ │ │ │ │ ├── CombineWeakValue.m │ │ │ │ │ ├── CombineValue.h │ │ │ │ │ ├── CombineWeakValue.h │ │ │ │ │ ├── CombineWeakView.h │ │ │ │ │ ├── CombineView.h │ │ │ │ │ ├── CombineValue+Category.m │ │ │ │ │ ├── CombineValue+Category.h │ │ │ │ │ ├── NSObject+CombineBind.h │ │ │ │ │ ├── CombineView+Category.h │ │ │ │ │ └── CombineBind.h │ │ │ ├── CombineObjectObjc.podspec │ │ │ └── LICENSE │ │ ├── Masonry │ │ │ ├── Masonry │ │ │ │ ├── MASLayoutConstraint.m │ │ │ │ ├── NSLayoutConstraint+MASDebugAdditions.h │ │ │ │ ├── MASLayoutConstraint.h │ │ │ │ ├── MASCompositeConstraint.h │ │ │ │ ├── Masonry.h │ │ │ │ ├── ViewController+MASAdditions.h │ │ │ │ ├── NSArray+MASShorthandAdditions.h │ │ │ │ ├── MASViewAttribute.m │ │ │ │ ├── MASViewAttribute.h │ │ │ │ ├── ViewController+MASAdditions.m │ │ │ │ └── MASViewConstraint.h │ │ │ └── LICENSE │ │ ├── Local Podspecs │ │ │ ├── CombineObjectObjc.podspec.json │ │ │ └── DriverListNode.podspec.json │ │ └── Manifest.lock │ ├── OCUIExample │ │ ├── OCUIExample │ │ │ ├── VStack │ │ │ │ ├── Example0 │ │ │ │ │ ├── OCUIVStackExample0 │ │ │ │ │ ├── OCUIVStackExample0.h │ │ │ │ │ └── OCUIVStackExample0.m │ │ │ │ ├── Example1 │ │ │ │ │ ├── OCUIVStackExample1 │ │ │ │ │ ├── OCUIVStackExample1.h │ │ │ │ │ └── OCUIVStackExample1.m │ │ │ │ ├── Example2 │ │ │ │ │ ├── OCUIVStackExample2 │ │ │ │ │ ├── OCUIVStackExample2.h │ │ │ │ │ └── OCUIVStackExample2.m │ │ │ │ ├── Example3 │ │ │ │ │ ├── OCUIVStackExample3 │ │ │ │ │ ├── OCUIVStackExample3.h │ │ │ │ │ └── OCUIVStackExample3.m │ │ │ │ ├── Example4 │ │ │ │ │ ├── OCUIVStackExample4 │ │ │ │ │ ├── OCUIVStackExample4.h │ │ │ │ │ └── OCUIVStackExample4.m │ │ │ │ └── Example5 │ │ │ │ │ ├── OCUIVStackExample5 │ │ │ │ │ ├── OCUIVStackExample5.h │ │ │ │ │ └── OCUIVStackExample5.m │ │ │ └── OCUIExample.h │ │ ├── Assets.xcassets │ │ │ └── Contents.json │ │ ├── ViewController.h │ │ ├── AppDelegate.h │ │ ├── main.m │ │ ├── SourceCodeViewController.m │ │ ├── DetailViewController.h │ │ ├── SourceCodeViewController.h │ │ ├── PageRowView.h │ │ ├── DetailViewController.m │ │ └── PageRowView.m │ ├── OCUIExample.xcodeproj │ │ └── project.xcworkspace │ │ │ └── contents.xcworkspacedata │ ├── Podfile │ ├── OCUIExample.xcworkspace │ │ ├── contents.xcworkspacedata │ │ └── xcshareddata │ │ │ └── IDEWorkspaceChecks.plist │ ├── OCUI │ │ └── Info.plist │ └── Podfile.lock └── SwiftUIExample │ └── SwiftUIExample │ ├── Assets.xcassets │ └── Contents.json │ ├── Preview Content │ └── Preview Assets.xcassets │ │ └── Contents.json │ ├── ContentView.swift │ └── AppDelegate.swift ├── images ├── image-20190829082506942.png ├── image-20190829082610632.png ├── image-20190829082826323.png ├── image-20190829082929288.png ├── image-20190829083253483.png └── image-20190829083510331.png ├── Sources ├── OCUI.h ├── Layout │ ├── Spacer │ │ ├── OCUISpacer.m │ │ ├── OCUISpacer.h │ │ ├── OCUICreate+OCUISpacer.h │ │ ├── OCUICreate+OCUISpacer.m │ │ ├── OCUINode+OCUISpacer.h │ │ └── OCUINode+OCUISpacer.m │ ├── HStack │ │ ├── OCUICreate+OCUIHStack.h │ │ ├── OCUICreate+OCUIHStack.m │ │ ├── OCUIHStack.h │ │ └── OCUIHStack.m │ ├── VStack │ │ ├── OCUICreate+OCUIVStack.h │ │ ├── OCUICreate+OCUIVStack.m │ │ └── OCUIVStack.h │ ├── ZStack │ │ ├── OCUICreate+OCUIZStack.h │ │ ├── OCUIZStack.h │ │ ├── OCUICreate+OCUIZStack.m │ │ └── OCUIZStack.m │ └── Stack │ │ └── OCUIStack.h ├── UI │ ├── ControllerViews │ │ ├── List │ │ │ ├── Section │ │ │ │ ├── OCUISection.m │ │ │ │ ├── OCUISection.h │ │ │ │ ├── OCUICreate+OCUISection.h │ │ │ │ ├── OCUINode+OCUISectionHeader.h │ │ │ │ ├── OCUICreate+OCUISection.m │ │ │ │ └── OCUINode+OCUISectionHeader.m │ │ │ ├── ListStyle │ │ │ │ ├── OCUIListStyle.m │ │ │ │ ├── OCUIListStyle.h │ │ │ │ ├── OCUIGroupedListStyle.m │ │ │ │ └── OCUIGroupedListStyle.h │ │ │ ├── OCUIList.h │ │ │ ├── OCUICreate+OCUIList.h │ │ │ ├── OCUINode+OCUIListStyle.h │ │ │ ├── OCUINode+OCUIListStyle.m │ │ │ ├── OCUICreate+OCUIList.m │ │ │ └── OCUIList.m │ │ ├── Toggle │ │ │ ├── OCUIToggle.h │ │ │ └── OCUIToggle.m │ │ ├── Slider │ │ │ ├── OCUISlider.h │ │ │ └── OCUISlider.m │ │ ├── Text │ │ │ ├── OCUIText.m │ │ │ ├── OCUICreate+OCUIText.h │ │ │ ├── OCUICreate+OCUIText.m │ │ │ ├── OCUIText.h │ │ │ └── OCUINode+OCUIText.h │ │ ├── NavigationView │ │ │ ├── OCUINavigationView.h │ │ │ ├── OCUICreate+OCUINavigationView.h │ │ │ ├── NavigationLink │ │ │ │ ├── OCUINavigationLink.m │ │ │ │ ├── OCUINavigationLink.h │ │ │ │ ├── OCUICreate+OCUINavigationLink.h │ │ │ │ └── OCUICreate+OCUINavigationLink.m │ │ │ ├── OCUICreate+OCUINavigationView.m │ │ │ ├── OCUINavigationView.m │ │ │ └── OCUINode+OCUINavigationView.h │ │ └── Button │ │ │ ├── OCUICreate+OCUIButton.h │ │ │ ├── OCUIButton.m │ │ │ ├── OCUIButton.h │ │ │ └── OCUICreate+OCUIButton.m │ └── Other Views │ │ ├── View │ │ ├── OCUICreate+OCUIView.h │ │ ├── OCUINode+OCUIView.h │ │ ├── OCUICreate+OCUIView.m │ │ ├── OCUINode+OCUIView.m │ │ └── OCUIView.h │ │ └── Image │ │ ├── OCUICreate+OCUIImage.h │ │ ├── OCUIImage.m │ │ ├── OCUIImage.h │ │ └── OCUICreate+OCUIImage.m ├── Core │ ├── OCUIHeader.h │ ├── OCUIColor.m │ ├── OCUIColor.h │ ├── OCUIMakerRenderView.h │ ├── NSObject+OCUIMaker.h │ ├── NSObject+OCUIMaker.m │ ├── OCUICreate.h │ ├── OCUIMaker.h │ ├── OCUICreate.m │ ├── OCUIViewParse.h │ └── OCUINode.h └── Parse │ └── iOS │ ├── UIView+LayoutSubViews.h │ ├── OCUIiOSLayout.h │ ├── OCUIiOSViewParse.h │ ├── OCUILayoutCenter.h │ └── UIView+LayoutSubViews.m ├── LICENSE └── .gitignore /Example/OCUIExample/Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example0/OCUIVStackExample0: -------------------------------------------------------------------------------- 1 | Text(@"Hello OCUI!"); 2 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example1/OCUIVStackExample1: -------------------------------------------------------------------------------- 1 | Text(@"Hello"); 2 | Text(@"OCUI!"); 3 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverList.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverList.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverNode.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverList.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverList.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverNode.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /images/image-20190829082506942.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829082506942.png -------------------------------------------------------------------------------- /images/image-20190829082610632.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829082610632.png -------------------------------------------------------------------------------- /images/image-20190829082826323.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829082826323.png -------------------------------------------------------------------------------- /images/image-20190829082929288.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829082929288.png -------------------------------------------------------------------------------- /images/image-20190829083253483.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829083253483.png -------------------------------------------------------------------------------- /images/image-20190829083510331.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/images/image-20190829083510331.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example2/OCUIVStackExample2: -------------------------------------------------------------------------------- 1 | Text(@"Hello"); 2 | Spacer(); 3 | Text(@"OCUI!"); 4 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example3/OCUIVStackExample3: -------------------------------------------------------------------------------- 1 | View() 2 | .backgroundColor([UIColor redColor]); 3 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineKey.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineKey.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverListNode.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverListNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineBind.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineBind.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineKey.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineKey.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineView.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineView.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverListNode.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverListNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineBind.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineBind.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineValue.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineValue.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineView.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineView.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineValue.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineValue.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverBlockContent.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverBlockContent.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/DriverDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/Masonry.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineWeakView.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineWeakView.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/DriverBlockContent.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/DriverBlockContent.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewGroupObjc.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewGroupObjc.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineWeakValue.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineWeakValue.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineWeakView.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineWeakView.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewGroupObjc.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewGroupObjc.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineWeakValue.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineWeakValue.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHCollectionViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHCollectionViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHTableViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASUtilities.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASUtilities.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineView+Category.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineView+Category.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/NSObject+CombineBind.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/NSObject+CombineBind.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHCollectionViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHTableViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHTableViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineValue+Category.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineValue+Category.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/CombineView+Category.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineView+Category.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/CombineObjectObjc/NSObject+CombineBind.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/NSObject+CombineBind.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHCollectionViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Example/SwiftUIExample/SwiftUIExample/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/CombineObjectObjc/CombineValue+Category.h: -------------------------------------------------------------------------------- 1 | ../../../CombineObjectObjc/Sources/CombineObject/CombineValue+Category.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHCollectionViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewAttribute.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASViewConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/View+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHCollectionViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHCollectionViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverList.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverList.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverNode.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverList.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverList.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverNode.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASConstraintMaker.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraintMaker.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASLayoutConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/NSArray+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASCompositeConstraint.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/MASConstraint+Private.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/MASConstraint+Private.h -------------------------------------------------------------------------------- /Example/SwiftUIExample/SwiftUIExample/Preview Content/Preview Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverListNode.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverListNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverListNode.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverListNode.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHAutoConfigurationTableViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHAutoConfigurationTableViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/UITableView+ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/TableView/UITableView+ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHAutoConfigurationTableViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHAutoConfigurationTableViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverBlockContent.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverBlockContent.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/DriverDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/View+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/View+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/ViewController+MASAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/UITableView+ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/TableView/UITableView+ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/DriverBlockContent.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/DriverBlockContent.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewGroupObjc.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewGroupObjc.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHCollectionViewCell.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewCell.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewGroupObjc.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewGroupObjc.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSArray+MASShorthandAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/2019-08-20-034515.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/2019-08-20-034515.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/2019-08-20-035055.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/2019-08-20-035055.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/ZHAutoConfigurationCollectionViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHAutoConfigurationCollectionViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/ZHAutoConfigurationCollectionViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/ZHAutoConfigurationCollectionViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHCollectionViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHCollectionViewGroup.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewGroup.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHTableViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHCollectionViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHTableViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHTableViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHCollectionViewBaseModel.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewBaseModel.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHCollectionViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | ../../../Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/image-20190820115521632.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/image-20190820115521632.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/image-20190820115538881.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/image-20190820115538881.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/image-20190820115647037.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/image-20190820115647037.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/images/image-20190820115743952.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/swiftkitui/OCUI/HEAD/Example/OCUIExample/Pods/DriverListNode/images/image-20190820115743952.png -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Public/DriverListNode/UICollectionView+ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/CollectionView/UICollectionView+ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHCollectionViewHeaderFooter.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHCollectionViewHeaderFooter.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Headers/Private/DriverListNode/UICollectionView+ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../DriverListNode/Sources/DriverList/CollectionView/UICollectionView+ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHAutoConfigurationTableViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHAutoConfigurationTableViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/UITableView+ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/TableView/UITableView+ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHAutoConfigurationTableViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHAutoConfigurationTableViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/UITableView+ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/TableView/UITableView+ZHTableViewDataSource.h -------------------------------------------------------------------------------- /Sources/OCUI.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUI.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIMaker.h" 10 | #import "NSObject+OCUIMaker.h" 11 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/ZHAutoConfigurationCollectionViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHAutoConfigurationCollectionViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/ZHAutoConfigurationCollectionViewDelegate.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/ZHAutoConfigurationCollectionViewDelegate.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/DriverListNode/DriverListNode-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DriverListNode : NSObject 3 | @end 4 | @implementation PodsDummy_DriverListNode 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example4/OCUIVStackExample4: -------------------------------------------------------------------------------- 1 | View() 2 | .backgroundColor([UIColor redColor]); 3 | View() 4 | .backgroundColor([UIColor blueColor]); 5 | View() 6 | .backgroundColor([UIColor grayColor]); 7 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Pods-OCUIExample/Pods-OCUIExample-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_OCUIExample : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_OCUIExample 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Public/DriverListNode/UICollectionView+ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/CollectionView/UICollectionView+ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/CombineObjectObjc/CombineObjectObjc-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_CombineObjectObjc : NSObject 3 | @end 4 | @implementation PodsDummy_CombineObjectObjc 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Headers/Private/DriverListNode/UICollectionView+ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | ../../../../../../Sources/DriverList/CollectionView/UICollectionView+ZHCollectionViewDataSource.h -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Masonry/Masonry-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Masonry : NSObject 3 | @end 4 | @implementation PodsDummy_Masonry 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example5/OCUIVStackExample5: -------------------------------------------------------------------------------- 1 | View() 2 | .backgroundColor([UIColor redColor]); 3 | View() 4 | .backgroundColor([UIColor blueColor]) 5 | .size(CGSizeMake(50, 50)); 6 | View() 7 | .backgroundColor([UIColor grayColor]); 8 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUISpacer.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISpacer.m 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUISpacer.h" 10 | 11 | @implementation OCUISpacer 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://cdn.cocoapods.org/' 2 | platform :ios, '9.0' 3 | 4 | target 'DriverListNodeCocoPods' do 5 | pod 'DriverListNode', :path => "../../DriverNodeList.podspec" 6 | pod 'Masonry' 7 | end 8 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/DriverListNode/DriverListNode-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_DriverListNode : NSObject 3 | @end 4 | @implementation PodsDummy_DriverListNode 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineWeakView.m: -------------------------------------------------------------------------------- 1 | // 2 | // CombineWeakView.m 3 | // CombineObjectObjc 4 | // 5 | // Created by 张行 on 2019/8/6. 6 | // 7 | 8 | #import "CombineWeakView.h" 9 | 10 | @implementation CombineWeakView 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineWeakValue.m: -------------------------------------------------------------------------------- 1 | // 2 | // CombineWeakValue.m 3 | // CombineObjectObjc 4 | // 5 | // Created by 张行 on 2019/8/6. 6 | // 7 | 8 | #import "CombineWeakValue.h" 9 | 10 | @implementation CombineWeakValue 11 | 12 | @end 13 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUISection.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISection.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUISection.h" 10 | 11 | @implementation OCUISection 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/ListStyle/OCUIListStyle.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIListStyle.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIListStyle.h" 10 | 11 | @implementation OCUIListStyle 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UIViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Sources/Core/OCUIHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIHeader.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/3. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | #import 9 | #import 10 | #import 11 | 12 | -------------------------------------------------------------------------------- /Example/OCUIExample/Podfile: -------------------------------------------------------------------------------- 1 | source 'https://cdn.cocoapods.org/' 2 | platform :ios, '9.0' 3 | 4 | target 'OCUIExample' do 5 | pod 'Masonry' 6 | pod 'CombineObjectObjc', :path => "./Pods/CombineObjectObjc/CombineObjectObjc.podspec" 7 | pod 'DriverListNode', :path => "./Pods/DriverListNode/DriverListNode.podspec" 8 | end 9 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Pods-DriverListNodeCocoPods/Pods-DriverListNodeCocoPods-dummy.m: -------------------------------------------------------------------------------- 1 | #import 2 | @interface PodsDummy_Pods_DriverListNodeCocoPods : NSObject 3 | @end 4 | @implementation PodsDummy_Pods_DriverListNodeCocoPods 5 | @end 6 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/DriverListNode/DriverListNode-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Sources/Core/OCUIColor.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIColor.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIColor.h" 10 | 11 | @implementation OCUIColor 12 | 13 | + (OCUIColor *)orange { 14 | return [OCUIColor new]; 15 | } 16 | 17 | @end 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHTableViewGroupObjc.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZHTableViewGroupObjc.h 3 | // ZHTableViewGroupObjc 4 | // 5 | // Created by 张行 on 2018/6/7. 6 | // Copyright © 2018年 张行. All rights reserved. 7 | // 8 | 9 | #import "ZHTableViewDataSource.h" 10 | #import "ZHCollectionViewDataSource.h" 11 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/CombineObjectObjc/CombineObjectObjc-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverBlockContent.m: -------------------------------------------------------------------------------- 1 | // 2 | // DriverBlockContent.m 3 | // ZHTableViewGroup iOS 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 15038777234. All rights reserved. 7 | // 8 | 9 | #import "DriverBlockContent.h" 10 | 11 | @implementation DriverBlockContent 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Sources/Parse/iOS/UIView+LayoutSubViews.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LayoutSubViews.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface UIView (LayoutSubViews) 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Masonry/Masonry-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/DriverListNode/DriverListNode-prefix.pch: -------------------------------------------------------------------------------- 1 | #ifdef __OBJC__ 2 | #import 3 | #else 4 | #ifndef FOUNDATION_EXPORT 5 | #if defined(__cplusplus) 6 | #define FOUNDATION_EXPORT extern "C" 7 | #else 8 | #define FOUNDATION_EXPORT extern 9 | #endif 10 | #endif 11 | #endif 12 | 13 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/ListStyle/OCUIListStyle.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIListStyle.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIListStyle : NSObject 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverListNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverListNode.h 3 | // DriverListNode 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "UICollectionView+ZHCollectionViewDataSource.h" 11 | #import "UITableView+ZHTableViewDataSource.h" 12 | 13 | 14 | -------------------------------------------------------------------------------- /Sources/Parse/iOS/OCUIiOSLayout.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIiOSLayout.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/3. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIiOSLayout : NSObject 14 | 15 | + (void)loadLayout; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/ViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.h 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface ViewController : UITableViewController 12 | 13 | 14 | @end 15 | 16 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineValue.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | 14 | @protocol CombineValue 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASLayoutConstraint.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASLayoutConstraint.h" 10 | 11 | @implementation MASLayoutConstraint 12 | 13 | @end 14 | -------------------------------------------------------------------------------- /Sources/Parse/iOS/OCUIiOSViewParse.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIiOSViewParse.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/3. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIiOSViewParse : NSObject 14 | 15 | + (void)loadParse; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Toggle/OCUIToggle.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIToggle.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/31. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIToggle : OCUIView 14 | 15 | - (instancetype)initWithIsOn:(BOOL)isOn; 16 | 17 | @end 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example1/OCUIVStackExample1.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample1.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIExample.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIVStackExample1 : OCUIExample 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example2/OCUIVStackExample2.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample2.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIExample.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIVStackExample2 : OCUIExample 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example3/OCUIVStackExample3.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample3.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIExample.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIVStackExample3 : OCUIExample 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example4/OCUIVStackExample4.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample4.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIExample.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIVStackExample4 : OCUIExample 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example5/OCUIVStackExample5.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample5.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIExample.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIVStackExample5 : OCUIExample 14 | 15 | @end 16 | 17 | NS_ASSUME_NONNULL_END 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUISpacer.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISpacer.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUICreate+OCUISpacer.h" 11 | #import "OCUINode+OCUISpacer.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface OCUISpacer : OCUINode 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Slider/OCUISlider.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISlider.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/31. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUISlider : OCUIView 14 | 15 | - (instancetype)initWithValue:(CGFloat)value; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Sources/Core/OCUIColor.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIColor.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIColor : NSObject 14 | 15 | @property (nonatomic, strong, readonly, class) OCUIColor *orange; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Sources/Core/OCUIMakerRenderView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIMakerRenderView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUICreate.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol OCUIMakerRenderView 15 | 16 | - (void)bodyUI:(OCUICreate *)c; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHTableViewBaseModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZHTableViewBaseModel.m 3 | // Pods 4 | // 5 | // Created by 张行 on 2017/3/18. 6 | // 7 | // 8 | 9 | #import "ZHTableViewBaseModel.h" 10 | 11 | @implementation ZHTableViewBaseModel 12 | 13 | - (instancetype)init { 14 | if (self = [super init]) { 15 | _height = NSNotFound; 16 | } 17 | return self; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example0/OCUIVStackExample0.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample0.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUIExample.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUIVStackExample0 : OCUIExample 15 | 16 | @end 17 | 18 | NS_ASSUME_NONNULL_END 19 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUISection.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISection.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUICreate+OCUISection.h" 11 | #import "OCUINode+OCUISectionHeader.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface OCUISection : OCUINode 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUIList.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIList.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/27. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | #import "OCUICreate+OCUIList.h" 11 | #import "OCUINode+OCUIListStyle.h" 12 | #import "OCUISection.h" 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface OCUIList : OCUIView 17 | 18 | @end 19 | 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineWeakValue.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineWeakValue.h 3 | // CombineObjectObjc 4 | // 5 | // Created by 张行 on 2019/8/6. 6 | // 7 | 8 | #import 9 | #import "CombineValue.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface CombineWeakValue : NSObject 14 | 15 | @property (nonatomic, weak) id value; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/AppDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.h 3 | // DriverListNodeCocoPods 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | @interface AppDelegate : UIResponder 12 | 13 | @property (strong, nonatomic) UIWindow *window; 14 | 15 | 16 | @end 17 | 18 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHCollectionViewBaseModel.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZHCollectionViewBaseModel.m 3 | // Pods 4 | // 5 | // Created by 张行 on 2018/2/6. 6 | // 7 | // 8 | 9 | #import "ZHCollectionViewBaseModel.h" 10 | 11 | @implementation ZHCollectionViewBaseModel 12 | 13 | - (instancetype)init { 14 | if (self = [super init]) { 15 | _size = CGSizeZero; 16 | } 17 | return self; 18 | } 19 | 20 | @end 21 | 22 | -------------------------------------------------------------------------------- /Sources/Core/NSObject+OCUIMaker.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+OCUIMaker.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUIMakerRenderView.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSObject (OCUIMaker) 15 | 16 | - (void)makeRenderView:(UIView *)view; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/ListStyle/OCUIGroupedListStyle.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIGroupedListStyle.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIGroupedListStyle.h" 10 | 11 | @implementation OCUIGroupedListStyle 12 | 13 | @end 14 | 15 | FOUNDATION_EXPORT OCUIGroupedListStyle *GroupedListStyle(void) { 16 | return [[OCUIGroupedListStyle alloc] init]; 17 | } 18 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Toggle/OCUIToggle.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIToggle.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/31. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIToggle.h" 10 | 11 | @implementation OCUIToggle { 12 | BOOL _isOn; 13 | } 14 | 15 | - (instancetype)initWithIsOn:(BOOL)isOn { 16 | if (self = [super init]) { 17 | _isOn = isOn; 18 | } 19 | return self; 20 | } 21 | 22 | @end 23 | 24 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/ListStyle/OCUIGroupedListStyle.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIGroupedListStyle.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIListStyle.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUIGroupedListStyle : OCUIListStyle 14 | 15 | @end 16 | 17 | FOUNDATION_EXPORT OCUIGroupedListStyle *GroupedListStyle(void); 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Slider/OCUISlider.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUISlider.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/31. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUISlider.h" 10 | 11 | @implementation OCUISlider { 12 | CGFloat _value; 13 | } 14 | 15 | - (instancetype)initWithValue:(CGFloat)value { 16 | if (self = [super init]) { 17 | _value = value; 18 | } 19 | return self; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/View/OCUICreate+OCUIView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIView; 13 | 14 | @interface OCUICreate (OCUIView) 15 | 16 | - (OCUIView *(^)(void))View; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIView *View(void); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUICreate+OCUISpacer.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUISpacer.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUISpacer; 13 | 14 | @interface OCUICreate (OCUISpacer) 15 | 16 | - (OCUISpacer *(^)(void))Spacer; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUISpacer *Spacer(void); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverDataSource.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverDataSource.h 3 | // DriverList 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DriverList.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol DriverDataSource 15 | 16 | - (void)reloadListWithDriverBlock:(void(^)(void))block; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Text/OCUIText.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIText.m 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIText.h" 10 | 11 | @implementation OCUIText 12 | 13 | @end 14 | 15 | @implementation OCUIText (Init) 16 | 17 | - (instancetype)initWithText:(NSString *)content { 18 | if (self = [super init]) { 19 | _content = content; 20 | } 21 | return self; 22 | } 23 | 24 | @end 25 | 26 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/main.m: -------------------------------------------------------------------------------- 1 | // 2 | // main.m 3 | // DriverListNodeCocoPods 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "AppDelegate.h" 11 | 12 | int main(int argc, char * argv[]) { 13 | @autoreleasepool { 14 | return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineWeakView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineWeakView.h 3 | // CombineObjectObjc 4 | // 5 | // Created by 张行 on 2019/8/6. 6 | // 7 | 8 | #import 9 | #import "CombineView.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface CombineWeakView : NSObject 14 | 15 | @property (nonatomic, weak) id view; 16 | @property (nonatomic, copy) NSString *identifier; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Text/OCUICreate+OCUIText.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIText.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIText; 13 | 14 | @interface OCUICreate (OCUIText) 15 | 16 | - (OCUIText *(^)(NSString *content))Text; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIText *Text(NSString *content); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/SourceCodeViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // SourceCodeViewController.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "SourceCodeViewController.h" 10 | 11 | @interface SourceCodeViewController () 12 | 13 | @end 14 | 15 | @implementation SourceCodeViewController 16 | 17 | - (void)viewDidLoad { 18 | [super viewDidLoad]; 19 | self.textView.text = self.sourceCode; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/OCUINavigationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINavigationView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUINavigationLink.h" 11 | #import "OCUICreate+OCUINavigationView.h" 12 | #import "OCUINode+OCUINavigationView.h" 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | 17 | @interface OCUINavigationView : OCUINode 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/Image/OCUICreate+OCUIImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIImage.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIImage; 13 | 14 | @interface OCUICreate (OCUIImage) 15 | 16 | - (OCUIImage *(^)(NSString *imageName))Image; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIImage *Image(NSString *imageName); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/View/OCUINode+OCUIView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUIView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUIColor.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUINode (OCUIView) 15 | 16 | @property (nonatomic, strong, readonly) OCUIColor *uiBackgroundColor; 17 | - (OCUINode *(^)(OCUIColor *))backgroundColor; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUICreate+OCUIList.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIList.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIList; 13 | 14 | @interface OCUICreate (OCUIList) 15 | 16 | - (OCUIList *(^)(OCUICreateElenmentBlock))List; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIList *List(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/DetailViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUI.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface DetailViewController : UIViewController 15 | 16 | @property (nonatomic, copy) void(^uiMaker)(void); 17 | @property (nonatomic, copy) NSString *sourceCode; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/SourceCodeViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // SourceCodeViewController.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface SourceCodeViewController : UIViewController 14 | 15 | @property (weak, nonatomic) IBOutlet UITextView *textView; 16 | @property (nonatomic, copy) NSString *sourceCode; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineView.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineView.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CombineValue.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @protocol CombineView 15 | 16 | - (void)setCombineValue:(id )value identifier:(NSString *)identifier; 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/AutomitcHeightCell.h: -------------------------------------------------------------------------------- 1 | // 2 | // AutomitcHeightCell.h 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface AutomitcHeightCell : UITableViewCell 14 | 15 | @property (nonatomic, strong, readonly) UILabel *multiLineLabel; 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/NSLayoutConstraint+MASDebugAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSLayoutConstraint+MASDebugAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * makes debug and log output of NSLayoutConstraints more readable 13 | */ 14 | @interface NSLayoutConstraint (MASDebugAdditions) 15 | 16 | @end 17 | -------------------------------------------------------------------------------- /Sources/Layout/HStack/OCUICreate+OCUIHStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIHStack.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIHStack; 13 | 14 | @interface OCUICreate (OCUIHStack) 15 | 16 | - (OCUIHStack *(^)(OCUICreateElenmentBlock))HStack; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIHStack *HStack(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/Layout/VStack/OCUICreate+OCUIVStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIVStack.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIVStack; 13 | 14 | @interface OCUICreate (OCUIVStack) 15 | 16 | - (OCUIVStack *(^)(OCUICreateElenmentBlock))VStack; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIVStack *VStack(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/Layout/ZStack/OCUICreate+OCUIZStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIZStack.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIZStack; 13 | 14 | @interface OCUICreate (OCUIZStack) 15 | 16 | - (OCUIZStack *(^)(OCUICreateElenmentBlock))ZStack; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIZStack *ZStack(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineValue+Category.m: -------------------------------------------------------------------------------- 1 | // 2 | // CombineValue+Category.m 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "CombineValue+Category.h" 10 | 11 | @implementation NSString (CombineValue) 12 | @end 13 | 14 | @implementation NSNumber (CombineValue) 15 | @end 16 | 17 | @implementation UIColor (CombineValue) 18 | @end 19 | 20 | @implementation UIFont (CombineValue) 21 | @end 22 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/Image/OCUIImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIImage.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/26. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIImage.h" 10 | 11 | @implementation OCUIImage 12 | 13 | @end 14 | 15 | @implementation OCUIImage (Init) 16 | 17 | - (instancetype)initWithImageName:(NSString *)imageName { 18 | if (self = [super init]) { 19 | _contentImage = [UIImage imageNamed:imageName]; 20 | } 21 | return self; 22 | } 23 | 24 | @end 25 | 26 | -------------------------------------------------------------------------------- /Sources/Core/NSObject+OCUIMaker.m: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+OCUIMaker.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "NSObject+OCUIMaker.h" 10 | #import "OCUIMaker.h" 11 | 12 | @implementation NSObject (OCUIMaker) 13 | 14 | - (void)makeRenderView:(UIView *)view { 15 | Maker(view, OCUICreateElenment{ 16 | [self bodyUI:c]; 17 | }); 18 | } 19 | 20 | #pragma mark - OCUIMakerRenderView 21 | - (void)bodyUI:(OCUICreate *)c {} 22 | 23 | @end 24 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example0/OCUIVStackExample0.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample0.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample0.h" 10 | 11 | @implementation OCUIVStackExample0 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | Text(@"Hello OCUI!"); 17 | }; 18 | } 19 | 20 | @end 21 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUINode+OCUIListStyle.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUIListStyle.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUIGroupedListStyle.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUINode (OCUIListStyle) 15 | 16 | @property (nonatomic, strong, readonly) OCUIListStyle *uiListStyle; 17 | 18 | - (OCUINode *(^)(OCUIListStyle *))listStyle; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUICreate+OCUISection.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUISection.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUISection; 13 | 14 | @interface OCUICreate (OCUISection) 15 | 16 | - (OCUISection *(^)(OCUICreateElenmentBlock))Section; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUISection *Section(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUINode+OCUISectionHeader.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUISectionHeader.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUICreate.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUINode (OCUISectionHeader) 15 | 16 | @property (nonatomic, strong, readonly) NSArray *headerNodes; 17 | 18 | - (OCUINode *(^)(OCUICreateElenmentBlock))header; 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example1/OCUIVStackExample1.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample1.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample1.h" 10 | 11 | @implementation OCUIVStackExample1 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | Text(@"Hello"); 17 | Text(@"OCUI!"); 18 | }; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Sources/Layout/ZStack/OCUIZStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIZStack.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIStack.h" 10 | #import "OCUICreate+OCUIZStack.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUIZStack : OCUIStack 15 | 16 | @end 17 | 18 | @interface OCUIZStack (Alignment) 19 | 20 | @property (nonatomic, strong, readonly) OCUIAlignment *uiAlignment; 21 | 22 | - (instancetype(^)(OCUIAlignment *))alignment; 23 | 24 | @end 25 | 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/DemoCollectionController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoCollectionController.h 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface DemoCollectionController : UIViewController 14 | 15 | @property (nonatomic, copy) void(^configCollectionViewDriver)(UICollectionView *collectionView); 16 | 17 | @end 18 | 19 | NS_ASSUME_NONNULL_END 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example3/OCUIVStackExample3.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample3.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample3.h" 10 | 11 | @implementation OCUIVStackExample3 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | // View() 17 | // .backgroundColor([UIColor redColor]); 18 | }; 19 | } 20 | 21 | @end 22 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUICreate+OCUISpacer.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUISpacer.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUISpacer.h" 10 | #import "OCUISpacer.h" 11 | 12 | @implementation OCUICreate (OCUISpacer) 13 | 14 | - (OCUISpacer *(^)(void))Spacer { 15 | return ^OCUISpacer *{ 16 | return [self addElenment:Spacer()]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUISpacer *Spacer(void) { 23 | return [[OCUISpacer alloc] init]; 24 | } 25 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Button/OCUICreate+OCUIButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIButton.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIButton; 13 | 14 | @interface OCUICreate (OCUIButton) 15 | 16 | - (OCUIButton *(^)(void(^actionBlock)(void), OCUICreateElenmentBlock))Button; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUIButton *Button(void(^actionBlock)(void), OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Button/OCUIButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIButton.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/30. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIButton.h" 10 | 11 | @implementation OCUIButton { 12 | 13 | } 14 | 15 | - (instancetype)initWithAction:(void(^)(void))actionBlock 16 | label:(void(^)(OCUICreate *c))labelBlock { 17 | if (self = [super initWithElenmentsBlock:labelBlock]) { 18 | _uiButtonAction = actionBlock; 19 | } 20 | return self; 21 | } 22 | 23 | @end 24 | 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example2/OCUIVStackExample2.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample2.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample2.h" 10 | 11 | @implementation OCUIVStackExample2 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | Text(@"Hello"); 17 | Spacer(); 18 | Text(@"OCUI!"); 19 | }; 20 | } 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/View/OCUICreate+OCUIView.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIView.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIView.h" 10 | #import "OCUIView.h" 11 | 12 | @implementation OCUICreate (OCUIView) 13 | 14 | - (OCUIView *(^)(void))View { 15 | return ^OCUIView *{ 16 | return [self addElenment:View()]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIView *View(void) { 23 | OCUIView *view = [[OCUIView alloc] init]; 24 | return view; 25 | } 26 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/OCUICreate+OCUINavigationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUINavigationView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUINavigationView; 13 | 14 | @interface OCUICreate (OCUINavigationView) 15 | 16 | - (OCUINavigationView *(^)(OCUICreateElenmentBlock))NavigationView;; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUINavigationView *NavigationView(OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/DemoViewController.h: -------------------------------------------------------------------------------- 1 | // 2 | // DemoViewController.h 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface DemoViewController : UIViewController 14 | 15 | @property (nonatomic, copy) void(^configTableViewDriver)(UITableView *tableView); 16 | @property (nonatomic, copy) void(^action)(UITableView *tableView); 17 | 18 | @end 19 | 20 | NS_ASSUME_NONNULL_END 21 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/NavigationLink/OCUINavigationLink.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINavigationLink.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINavigationLink.h" 10 | 11 | @implementation OCUINavigationLink 12 | 13 | - (instancetype)initWithDestination:(Class)destination 14 | block:(void(^)(OCUICreate *c))block { 15 | if (self = [super initWithElenmentsBlock:block]) { 16 | _destination = destination; 17 | } 18 | return self; 19 | } 20 | 21 | @end 22 | 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/OCUIExample.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIExample.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DetailViewController.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUIExample : NSObject 15 | 16 | + (void)exampleWithController:(DetailViewController *)controller 17 | indexPath:(NSIndexPath *)indexPath; 18 | 19 | + (void)exampleWithController:(DetailViewController *)controller; 20 | 21 | @end 22 | 23 | NS_ASSUME_NONNULL_END 24 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Local Podspecs/CombineObjectObjc.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "CombineObjectObjc", 3 | "version": "1.0.0", 4 | "summary": "CombineObject 响应式框架的 Objective-C 版本", 5 | "homepage": "https://github.com/combineobject/CombineObject-Objc", 6 | "license": "MIT", 7 | "authors": { 8 | "张行": "zhanghang@globalegrow.com" 9 | }, 10 | "platforms": { 11 | "ios": "9.0" 12 | }, 13 | "source": { 14 | "git": "https://github.com/combineobject/CombineObject-Objc.git", 15 | "tag": "1.0.0" 16 | }, 17 | "source_files": [ 18 | "Sources", 19 | "Sources/**/*.{h,m}" 20 | ] 21 | } 22 | -------------------------------------------------------------------------------- /Sources/Core/OCUICreate.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUINode.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | #define OCUICreateElenment ^(OCUICreate *c) 15 | #define OCUICreateElenmentBlock void(^block)(OCUICreate *c) 16 | 17 | @interface OCUICreate : NSObject 18 | 19 | @property (nonatomic, copy, readonly) NSArray *elenments; 20 | 21 | - (__kindof OCUINode *)addElenment:(OCUINode *)elenment; 22 | @end 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Example/SwiftUIExample/SwiftUIExample/ContentView.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ContentView.swift 3 | // SwiftUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | import SwiftUI 10 | 11 | struct ContentView: View { 12 | var body: some View { 13 | Text("Hello World") 14 | .foregroundColor(.red) 15 | .bold() 16 | .italic() 17 | .fontWeight(.black) 18 | } 19 | } 20 | 21 | #if DEBUG 22 | struct ContentView_Previews: PreviewProvider { 23 | static var previews: some View { 24 | ContentView() 25 | } 26 | } 27 | #endif 28 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Button/OCUIButton.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIButton.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/30. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | #import "OCUICreate.h" 11 | #import "OCUICreate+OCUIButton.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface OCUIButton : OCUIView 16 | 17 | @property (nonatomic, copy, readonly) void(^uiButtonAction)(void); 18 | 19 | - (instancetype)initWithAction:(void(^)(void))actionBlock 20 | label:(void(^)(OCUICreate *c))labelBlock; 21 | 22 | @end 23 | 24 | 25 | NS_ASSUME_NONNULL_END 26 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Text/OCUICreate+OCUIText.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIText.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIText.h" 10 | #import "OCUIText.h" 11 | 12 | @implementation OCUICreate (OCUIText) 13 | 14 | - (OCUIText *(^)(NSString *content))Text { 15 | return ^OCUIText *(NSString *content) { 16 | return [self addElenment:Text(content)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIText *Text(NSString *content) { 23 | return [[OCUIText alloc] initWithText:content]; 24 | } 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/CombineObjectObjc.podspec: -------------------------------------------------------------------------------- 1 | Pod::Spec.new do |spec| 2 | spec.name = "CombineObjectObjc" 3 | spec.version = "1.0.0" 4 | spec.summary = "CombineObject 响应式框架的 Objective-C 版本" 5 | spec.homepage = "https://github.com/combineobject/CombineObject-Objc" 6 | spec.license = "MIT" 7 | spec.author = { "张行" => "zhanghang@globalegrow.com" } 8 | spec.platform = :ios, "9.0" 9 | spec.source = { :git => "https://github.com/combineobject/CombineObject-Objc.git", :tag => "#{spec.version}" } 10 | spec.source_files = "Sources", "Sources/**/*.{h,m}" 11 | end 12 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/TableView/UITableView+ZHTableViewDataSource.h: -------------------------------------------------------------------------------- 1 | // 2 | // UITableView+ZHTableViewDataSource.h 3 | // ZHTableViewGroup iOS 4 | // 5 | // Created by 张行 on 2019/8/8. 6 | // Copyright © 2019 15038777234. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ZHTableViewDataSource.h" 11 | #import "DriverDataSource.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UITableView (ZHTableViewDataSource) 16 | 17 | @property (nonatomic, strong, readonly) ZHTableViewDataSource *tableDataSource; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Local Podspecs/DriverListNode.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DriverListNode", 3 | "version": "3.4.0", 4 | "summary": "Manger UITableView DataSource More Cell Style", 5 | "homepage": "https://github.com/josercc/ZHTableViewGroup", 6 | "license": { 7 | "type": "MIT", 8 | "file": "LICENSE" 9 | }, 10 | "authors": { 11 | "15038777234": "15038777234@163.com" 12 | }, 13 | "source": { 14 | "git": "https://github.com/josercc/ZHTableViewGroup.git", 15 | "tag": "3.4.0" 16 | }, 17 | "platforms": { 18 | "ios": "8.0" 19 | }, 20 | "source_files": "Sources/DriverList/**/*.{h,m}" 21 | } 22 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/NavigationLink/OCUINavigationLink.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINavigationLink.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUICreate+OCUINavigationLink.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUINavigationLink : OCUINode 15 | 16 | @property (nonatomic, strong) Class destination; 17 | 18 | - (instancetype)initWithDestination:(Class)destination 19 | block:(void(^)(OCUICreate *c))block; 20 | 21 | @end 22 | 23 | 24 | NS_ASSUME_NONNULL_END 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DriverListNode (3.4.0) 3 | - Masonry (1.1.0) 4 | 5 | DEPENDENCIES: 6 | - DriverListNode (from `../../DriverNodeList.podspec`) 7 | - Masonry 8 | 9 | SPEC REPOS: 10 | trunk: 11 | - Masonry 12 | 13 | EXTERNAL SOURCES: 14 | DriverListNode: 15 | :path: "../../DriverNodeList.podspec" 16 | 17 | SPEC CHECKSUMS: 18 | DriverListNode: da9da2338a357e503840aa8e447e4a2edde5f862 19 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 20 | 21 | PODFILE CHECKSUM: b324d774b75af9157e262c0be4db5bf503fbd360 22 | 23 | COCOAPODS: 1.8.0.beta.1 24 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/Image/OCUIImage.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIImage.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/26. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | #import "OCUICreate+OCUIImage.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | @class OCUIImage; 14 | 15 | @interface OCUIImage : OCUIView 16 | 17 | @property (nonatomic, strong, readonly) UIImage *contentImage; 18 | 19 | @end 20 | 21 | //####################(Init)#################### 22 | @interface OCUIImage (Init) 23 | 24 | - (instancetype)initWithImageName:(NSString *)imageName; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - DriverListNode (3.4.0) 3 | - Masonry (1.1.0) 4 | 5 | DEPENDENCIES: 6 | - DriverListNode (from `../../DriverNodeList.podspec`) 7 | - Masonry 8 | 9 | SPEC REPOS: 10 | trunk: 11 | - Masonry 12 | 13 | EXTERNAL SOURCES: 14 | DriverListNode: 15 | :path: "../../DriverNodeList.podspec" 16 | 17 | SPEC CHECKSUMS: 18 | DriverListNode: da9da2338a357e503840aa8e447e4a2edde5f862 19 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 20 | 21 | PODFILE CHECKSUM: b324d774b75af9157e262c0be4db5bf503fbd360 22 | 23 | COCOAPODS: 1.8.0.beta.1 24 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUINode+OCUIListStyle.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUIListStyle.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode+OCUIListStyle.h" 10 | 11 | @implementation OCUINode (OCUIListStyle) 12 | 13 | - (OCUIListStyle *)uiListStyle { 14 | return self.propertyGet(@selector(uiListStyle)); 15 | } 16 | 17 | - (OCUINode *(^)(OCUIListStyle *))listStyle { 18 | return ^OCUINode *(OCUIListStyle *listStyle) { 19 | self.propertySet(listStyle,@selector(uiListStyle)); 20 | return self; 21 | }; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/View/OCUINode+OCUIView.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUIView.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode+OCUIView.h" 10 | 11 | @implementation OCUINode (OCUIView) 12 | 13 | - (OCUIColor *)uiBackgroundColor { 14 | return self.propertyGet(@selector(uiBackgroundColor)); 15 | } 16 | 17 | - (OCUINode *(^)(OCUIColor *))backgroundColor { 18 | return ^OCUINode *(OCUIColor *backgroundColor) { 19 | self.propertySet(backgroundColor,@selector(uiBackgroundColor)); 20 | return self; 21 | }; 22 | } 23 | 24 | @end 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/NavigationLink/OCUICreate+OCUINavigationLink.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUINavigationLink.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUINavigationLink; 13 | 14 | @interface OCUICreate (OCUINavigationLink) 15 | 16 | - (OCUINavigationLink *(^)(Class destination, OCUICreateElenmentBlock))NavigationLink; 17 | 18 | @end 19 | 20 | FOUNDATION_EXPORT OCUINavigationLink *NavigationLink(Class destination, OCUICreateElenmentBlock); 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUICreate+OCUIList.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIList.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIList.h" 10 | #import "OCUIList.h" 11 | 12 | @implementation OCUICreate (OCUIList) 13 | 14 | - (OCUIList *(^)(OCUICreateElenmentBlock))List { 15 | return ^OCUIList *(OCUICreateElenmentBlock) { 16 | return [self addElenment:List(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIList *List(OCUICreateElenmentBlock) { 23 | return [[OCUIList alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Text/OCUIText.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIText.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIView.h" 10 | #import "OCUIColor.h" 11 | #import "OCUICreate+OCUIText.h" 12 | #import "OCUINode+OCUIText.h" 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | 16 | @interface OCUIText : OCUIView 17 | 18 | @property (nonatomic, copy, readonly) NSString *content; 19 | 20 | @end 21 | 22 | //####################(Init)#################### 23 | @interface OCUIText (Init) 24 | 25 | - (instancetype)initWithText:(NSString *)content; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineValue+Category.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineValue+Category.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CombineValue.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface NSString (CombineValue) 15 | @end 16 | 17 | @interface NSNumber (CombineValue) 18 | @end 19 | 20 | @interface UIColor (CombineValue) 21 | 22 | @end 23 | 24 | @interface UIFont (CombineValue) 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/CollectionView/UICollectionView+ZHCollectionViewDataSource.h: -------------------------------------------------------------------------------- 1 | // 2 | // UICollectionView+ZHCollectionViewDataSource.h 3 | // DriverList 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "ZHCollectionViewDataSource.h" 11 | #import "DriverDataSource.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UICollectionView (ZHCollectionViewDataSource) 16 | 17 | @property (nonatomic, strong, readonly) ZHCollectionViewDataSource *collectionDataSource; 18 | 19 | @end 20 | 21 | NS_ASSUME_NONNULL_END 22 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Sources/Layout/HStack/OCUICreate+OCUIHStack.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIHStack.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIHStack.h" 10 | #import "OCUIHStack.h" 11 | 12 | @implementation OCUICreate (OCUIHStack) 13 | 14 | - (OCUIHStack *(^)(OCUICreateElenmentBlock))HStack { 15 | return ^OCUIHStack *(OCUICreateElenmentBlock) { 16 | return [self addElenment:HStack(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIHStack *HStack(OCUICreateElenmentBlock) { 23 | return [[OCUIHStack alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Sources/Layout/VStack/OCUICreate+OCUIVStack.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIVStack.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIVStack.h" 10 | #import "OCUIVStack.h" 11 | 12 | @implementation OCUICreate (OCUIVStack) 13 | 14 | - (OCUIVStack *(^)(OCUICreateElenmentBlock))VStack { 15 | return ^OCUIVStack *(OCUICreateElenmentBlock) { 16 | return [self addElenment:VStack(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIVStack *VStack(OCUICreateElenmentBlock) { 23 | return [[OCUIVStack alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Sources/Layout/ZStack/OCUICreate+OCUIZStack.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIZStack.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIZStack.h" 10 | #import "OCUIZStack.h" 11 | 12 | @implementation OCUICreate (OCUIZStack) 13 | 14 | - (OCUIZStack *(^)(OCUICreateElenmentBlock))ZStack { 15 | return ^OCUIZStack *(OCUICreateElenmentBlock) { 16 | return [self addElenment:ZStack(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIZStack *ZStack(OCUICreateElenmentBlock) { 23 | return [[OCUIZStack alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example4/OCUIVStackExample4.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample4.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample4.h" 10 | 11 | @implementation OCUIVStackExample4 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | // View() 17 | // .backgroundColor(nil); 18 | // View() 19 | // .backgroundColor(nil); 20 | // View() 21 | // .backgroundColor(nil); 22 | }; 23 | } 24 | 25 | @end 26 | -------------------------------------------------------------------------------- /Sources/Layout/HStack/OCUIHStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIHStack.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIStack.h" 10 | #import "OCUICreate+OCUIHStack.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUIHStack : OCUIStack 15 | 16 | - (CGFloat)intrinsicContentSizeWidth; 17 | 18 | @end 19 | 20 | @interface OCUIHStack (alignment) 21 | 22 | /// 垂直布局里面子元素的横向布局 默认为居中 23 | @property (nonatomic, assign, readonly) OCUIVerticalAlignment uiAlignment; 24 | 25 | /** 26 | 设置子元素的布局 27 | */ 28 | - (OCUIHStack *(^)(OCUIVerticalAlignment))alignment; 29 | 30 | @end 31 | 32 | NS_ASSUME_NONNULL_END 33 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Local Podspecs/DriverListNode.podspec.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "DriverListNode", 3 | "version": "3.4.0", 4 | "summary": "Manger UITableView DataSource More Cell Style", 5 | "homepage": "https://github.com/josercc/ZHTableViewGroup", 6 | "license": { 7 | "type": "MIT", 8 | "file": "LICENSE" 9 | }, 10 | "authors": { 11 | "15038777234": "15038777234@163.com" 12 | }, 13 | "source": { 14 | "git": "https://github.com/josercc/ZHTableViewGroup.git", 15 | "tag": "3.4.0" 16 | }, 17 | "platforms": { 18 | "ios": "8.0" 19 | }, 20 | "source_files": "Sources/DriverList/**/*.{h,m}" 21 | } 22 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/Image/OCUICreate+OCUIImage.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIImage.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIImage.h" 10 | #import "OCUIImage.h" 11 | 12 | @implementation OCUICreate (OCUIImage) 13 | 14 | - (OCUIImage *(^)(NSString *imageName))Image { 15 | return ^OCUIImage *(NSString *imageName) { 16 | return [self addElenment:Image(imageName)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIImage *Image(NSString *imageName) { 23 | OCUIImage *image = [[OCUIImage alloc] initWithImageName:imageName]; 24 | return image; 25 | } 26 | -------------------------------------------------------------------------------- /Sources/Core/OCUIMaker.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIMaker.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/21. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUICreate.h" 11 | #import "OCUIHStack.h" 12 | #import "OCUIVStack.h" 13 | #import "OCUIZStack.h" 14 | #import "OCUIImage.h" 15 | #import "OCUIText.h" 16 | #import "OCUINavigationView.h" 17 | #import "OCUIList.h" 18 | #import "OCUIButton.h" 19 | 20 | NS_ASSUME_NONNULL_BEGIN 21 | @class OCUIMaker; 22 | 23 | FOUNDATION_EXTERN OCUIMaker *Maker(UIView *contentView, OCUICreateElenmentBlock); 24 | 25 | /// UI 构造器 26 | @interface OCUIMaker : OCUINode 27 | 28 | @end 29 | 30 | NS_ASSUME_NONNULL_END 31 | -------------------------------------------------------------------------------- /Sources/Layout/ZStack/OCUIZStack.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIZStack.m 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIZStack.h" 10 | #import "OCUICreate.h" 11 | 12 | @implementation OCUIZStack 13 | 14 | @end 15 | 16 | @implementation OCUIZStack (Alignment) 17 | 18 | - (OCUIAlignment *)uiAlignment { 19 | return self.propertyGet(@selector(uiAlignment)); 20 | } 21 | 22 | - (instancetype _Nonnull (^)(OCUIAlignment * _Nonnull))alignment { 23 | return ^OCUIZStack *(OCUIAlignment *alignment) { 24 | self.propertySet(alignment,@selector(uiAlignment)); 25 | return self; 26 | }; 27 | } 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUICreate+OCUISection.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUISection.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUISection.h" 10 | #import "OCUISection.h" 11 | 12 | @implementation OCUICreate (OCUISection) 13 | 14 | - (OCUISection *(^)(OCUICreateElenmentBlock))Section { 15 | return ^OCUISection *(OCUICreateElenmentBlock) { 16 | return [self addElenment:Section(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUISection *Section(OCUICreateElenmentBlock) { 23 | return [[OCUISection alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASLayoutConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASLayoutConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 3/08/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * When you are debugging or printing the constraints attached to a view this subclass 13 | * makes it easier to identify which constraints have been created via Masonry 14 | */ 15 | @interface MASLayoutConstraint : NSLayoutConstraint 16 | 17 | /** 18 | * a key to associate with this constraint 19 | */ 20 | @property (nonatomic, strong) id mas_key; 21 | 22 | @end 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/DriverListNode/DriverListNode.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DriverListNode" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DriverListNode" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/DriverListNode 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASCompositeConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASCompositeConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASConstraint.h" 10 | #import "MASUtilities.h" 11 | 12 | /** 13 | * A group of MASConstraint objects 14 | */ 15 | @interface MASCompositeConstraint : MASConstraint 16 | 17 | /** 18 | * Creates a composite with a predefined array of children 19 | * 20 | * @param children child MASConstraints 21 | * 22 | * @return a composite constraint 23 | */ 24 | - (id)initWithChildren:(NSArray *)children; 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Masonry/Masonry.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/Masonry 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/Masonry" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/Masonry" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/Masonry 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/CombineObjectObjc/CombineObjectObjc.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/CombineObjectObjc 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/CombineObjectObjc" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CombineObjectObjc" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/CombineObjectObjc 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/DriverListNode/DriverListNode.xcconfig: -------------------------------------------------------------------------------- 1 | CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode 2 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 3 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Private" "${PODS_ROOT}/Headers/Private/DriverListNode" "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DriverListNode" 4 | PODS_BUILD_DIR = ${BUILD_DIR} 5 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 6 | PODS_ROOT = ${SRCROOT} 7 | PODS_TARGET_SRCROOT = ${PODS_ROOT}/../../.. 8 | PRODUCT_BUNDLE_IDENTIFIER = org.cocoapods.${PRODUCT_NAME:rfc1034identifier} 9 | SKIP_INSTALL = YES 10 | -------------------------------------------------------------------------------- /Sources/Core/OCUICreate.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | 10 | #import "OCUICreate.h" 11 | 12 | @implementation OCUICreate { 13 | NSMutableArray *_elenmentNodes; 14 | } 15 | 16 | - (instancetype)init { 17 | if (self = [super init]) { 18 | _elenmentNodes = [NSMutableArray array]; 19 | } 20 | return self; 21 | } 22 | 23 | - (__kindof OCUINode *)addElenment:(OCUINode *)elenment { 24 | if (elenment) { 25 | [_elenmentNodes addObject:elenment]; 26 | } 27 | return elenment; 28 | } 29 | 30 | - (NSArray *)elenments { 31 | return _elenmentNodes; 32 | } 33 | 34 | @end 35 | 36 | 37 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/OCUIExample/VStack/Example5/OCUIVStackExample5.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStackExample5.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIVStackExample5.h" 10 | 11 | @implementation OCUIVStackExample5 12 | 13 | + (void)exampleWithController:(DetailViewController *)controller { 14 | [super exampleWithController:controller]; 15 | controller.uiMaker = ^{ 16 | // View() 17 | // .backgroundColor([UIColor redColor]); 18 | // View() 19 | // .backgroundColor([UIColor blueColor]) 20 | // .size(CGSizeMake(50, 50)); 21 | // View() 22 | // .backgroundColor([UIColor grayColor]); 23 | }; 24 | } 25 | 26 | @end 27 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/NSObject+CombineBind.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSObject+CombineBind.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CombineValue+Category.h" 11 | #import "CombineView+Category.h" 12 | #import "CombineBind.h" 13 | #import "CombineKey.h" 14 | 15 | NS_ASSUME_NONNULL_BEGIN 16 | 17 | @interface NSObject (CombineBind) 18 | 19 | - (void(^)(CombineBind *, NSString *))viewBind; 20 | - (void(^)(id, NSString *))wrappedContent; 21 | 22 | - (void)updateWithBind:(CombineBind *)bind 23 | identifier:(NSString *)identifier; 24 | 25 | @end 26 | 27 | NS_ASSUME_NONNULL_END 28 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverBlockContent.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverBlockContent.h 3 | // ZHTableViewGroup iOS 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 15038777234. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface DriverBlockContent<__covariant T:UIView *> : NSObject 14 | 15 | @property (nonatomic, copy) void(^configBlock)(T view, NSUInteger index); 16 | @property (nonatomic, copy) void(^didSelectRowBlock)(T view, NSUInteger index); 17 | @property (nonatomic, copy) CGFloat(^customHeightBlock)(T view, NSUInteger index); 18 | @property (nonatomic, copy) CGSize(^customSizeBlock)(T view, NSUInteger index); 19 | 20 | @end 21 | 22 | NS_ASSUME_NONNULL_END 23 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Button/OCUICreate+OCUIButton.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUIButton.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUIButton.h" 10 | #import "OCUIButton.h" 11 | 12 | @implementation OCUICreate (OCUIButton) 13 | 14 | - (OCUIButton *(^)(void(^actionBlock)(void), OCUICreateElenmentBlock))Button { 15 | return ^OCUIButton *(void(^actionBlock)(void), OCUICreateElenmentBlock) { 16 | return [self addElenment:Button(actionBlock, block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUIButton *Button(void(^actionBlock)(void), OCUICreateElenmentBlock) { 23 | OCUIButton *button = [[OCUIButton alloc] init]; 24 | return button; 25 | } 26 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/OCUICreate+OCUINavigationView.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUINavigationView.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUINavigationView.h" 10 | #import "OCUINavigationView.h" 11 | 12 | @implementation OCUICreate (OCUINavigationView) 13 | 14 | - (OCUINavigationView *(^)(OCUICreateElenmentBlock))NavigationView { 15 | return ^OCUINavigationView *(OCUICreateElenmentBlock) { 16 | return [self addElenment:NavigationView(block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUINavigationView *NavigationView(OCUICreateElenmentBlock) { 23 | return [[OCUINavigationView alloc] initWithElenmentsBlock:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUINode+OCUISpacer.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUISpacer.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface OCUINode (OCUISpacerOffset) 14 | 15 | /// /// 浮动布局 如果值为 NSNotFound 则为固定布局 16 | @property (nonatomic, assign, readonly) CGFloat uiMinOffset; 17 | /// 固定布局 如果值为 NSNotFound 则为浮动布局 18 | @property (nonatomic, assign, readonly) CGFloat uiFlxedOffset; 19 | /// 当前布局的值 最低不能小于浮动最小值 20 | @property (nonatomic, assign, readonly) CGFloat uiOffset; 21 | 22 | - (OCUINode *(^)(CGFloat))minOffset; 23 | - (OCUINode *(^)(CGFloat))flxedOffset; 24 | - (OCUINode *(^)(CGFloat))offset; 25 | 26 | @end 27 | 28 | NS_ASSUME_NONNULL_END 29 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Pods-DriverListNodeCocoPods/Pods-DriverListNodeCocoPods.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DriverListNode" "${PODS_ROOT}/Headers/Public/Masonry" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DriverListNode" -l"Masonry" -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Target Support Files/Pods-DriverListNodeCocoPods/Pods-DriverListNodeCocoPods.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/DriverListNode" "${PODS_ROOT}/Headers/Public/Masonry" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"DriverListNode" -l"Masonry" -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/PageRowView.h: -------------------------------------------------------------------------------- 1 | // 2 | // PageRowView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUI.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | 13 | @interface PageRowView : OCUINode 14 | 15 | @property (nonatomic, copy, readonly) NSString *title; 16 | @property (nonatomic, copy, readonly) NSString *subTitle; 17 | 18 | - (instancetype)initWithTitle:(NSString *)title 19 | subTitle:(NSString *)subTitle; 20 | 21 | @end 22 | 23 | @interface OCUICreate (PageRowView) 24 | 25 | - (PageRowView *(^)(NSString *title, NSString *subTitle))PageRow; 26 | 27 | @end 28 | 29 | FOUNDATION_EXPORT PageRowView *PageRow(NSString *title, NSString *subTitle); 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Sources/Layout/VStack/OCUIVStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIVStack.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIStack.h" 10 | #import "OCUICreate+OCUIVStack.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | @interface OCUIVStack : OCUIStack 15 | 16 | - (CGFloat)intrinsicContentSizeHeight; 17 | 18 | @end 19 | 20 | @interface OCUIVStack (Alignment) 21 | 22 | /// 垂直布局里面子元素的横向布局 默认为居中 23 | @property (nonatomic, assign, readonly) OCUIHorizontalAlignment uiAlignment; 24 | 25 | /** 26 | 设置子元素的布局 27 | */ 28 | - (OCUIVStack *(^)(OCUIHorizontalAlignment))alignment; 29 | 30 | @end 31 | 32 | @interface OCUIVStack (BoxElenments) 33 | 34 | + (void)boxElenmentsWithElenment:(OCUINode *)elenment; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/OCUINavigationView.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINavigationView.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINavigationView.h" 10 | #import "OCUIVStack.h" 11 | 12 | @implementation OCUINavigationView 13 | 14 | - (void)loadElenmentInContentView:(UIView *)contentView { 15 | UIViewController *viewController = OCUIControllerWithView(contentView); 16 | NSParameterAssert(viewController.navigationController); 17 | [OCUIVStack boxElenmentsWithElenment:self]; 18 | [self.elenments enumerateObjectsUsingBlock:^(OCUINode * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 19 | [obj loadElenmentInContentView:contentView]; 20 | }]; 21 | } 22 | 23 | @end 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/Section/OCUINode+OCUISectionHeader.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUISectionHeader.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode+OCUISectionHeader.h" 10 | 11 | @implementation OCUINode (OCUISectionHeader) 12 | 13 | - (NSArray *)headerNodes { 14 | return self.propertyGet(@selector(headerNodes)); 15 | } 16 | 17 | - (OCUINode *(^)(OCUICreateElenmentBlock))header { 18 | return ^OCUINode *(OCUICreateElenmentBlock) { 19 | if (block) { 20 | OCUICreate *create = [[OCUICreate alloc] init]; 21 | block(create); 22 | self.propertySet(create.elenments,@selector(headerNodes)); 23 | } 24 | return self; 25 | }; 26 | } 27 | 28 | 29 | @end 30 | -------------------------------------------------------------------------------- /Sources/Parse/iOS/OCUILayoutCenter.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUILayoutCenter.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/5. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUILayoutItem.h" 11 | #import "OCUISpacer.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface OCUILayoutCenter : NSObject 16 | 17 | - (instancetype)initWithContentViewLayoutItem:(OCUILayoutItem *)contentViewLayoutItem 18 | floatLayoutItems:(NSArray *)floatLayoutItems 19 | flxedLayoutItems:(NSArray *)flxedLayoutItems; 20 | 21 | @end 22 | 23 | @interface UIView (OCUILayoutCenter) 24 | 25 | @property (nonatomic, strong) OCUILayoutCenter *layoutCenter; 26 | 27 | @end 28 | 29 | NS_ASSUME_NONNULL_END 30 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUI/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Pods-OCUIExample/Pods-OCUIExample.debug.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CombineObjectObjc" "${PODS_ROOT}/Headers/Public/DriverListNode" "${PODS_ROOT}/Headers/Public/Masonry" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CombineObjectObjc" "${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"CombineObjectObjc" -l"DriverListNode" -l"Masonry" -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Target Support Files/Pods-OCUIExample/Pods-OCUIExample.release.xcconfig: -------------------------------------------------------------------------------- 1 | GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 2 | HEADER_SEARCH_PATHS = $(inherited) "${PODS_ROOT}/Headers/Public" "${PODS_ROOT}/Headers/Public/CombineObjectObjc" "${PODS_ROOT}/Headers/Public/DriverListNode" "${PODS_ROOT}/Headers/Public/Masonry" 3 | LIBRARY_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/CombineObjectObjc" "${PODS_CONFIGURATION_BUILD_DIR}/DriverListNode" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" 4 | OTHER_LDFLAGS = $(inherited) -ObjC -l"CombineObjectObjc" -l"DriverListNode" -l"Masonry" -framework "Foundation" -framework "UIKit" 5 | PODS_BUILD_DIR = ${BUILD_DIR} 6 | PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) 7 | PODS_PODFILE_DIR_PATH = ${SRCROOT}/. 8 | PODS_ROOT = ${SRCROOT}/Pods 9 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/NavigationLink/OCUICreate+OCUINavigationLink.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUICreate+OCUINavigationLink.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUICreate+OCUINavigationLink.h" 10 | #import "OCUINavigationLink.h" 11 | 12 | @implementation OCUICreate (OCUINavigationLink) 13 | 14 | - (OCUINavigationLink *(^)(Class destination, OCUICreateElenmentBlock))NavigationLink { 15 | return ^OCUINavigationLink *(Class destination, OCUICreateElenmentBlock) { 16 | return [self addElenment:NavigationLink(destination, block)]; 17 | }; 18 | } 19 | 20 | @end 21 | 22 | FOUNDATION_EXPORT OCUINavigationLink *NavigationLink(Class destination, OCUICreateElenmentBlock) { 23 | return [[OCUINavigationLink alloc] initWithDestination:destination block:block]; 24 | } 25 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/DetailViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DetailViewController.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "DetailViewController.h" 10 | #import "SourceCodeViewController.h" 11 | 12 | @interface DetailViewController () 13 | 14 | @end 15 | 16 | @implementation DetailViewController 17 | 18 | - (void)viewDidLoad { 19 | [super viewDidLoad]; 20 | self.edgesForExtendedLayout = UIRectEdgeNone; 21 | self.navigationController.navigationBar.translucent = NO; 22 | // Maker(self.view, self.uiMaker); 23 | } 24 | 25 | - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 26 | SourceCodeViewController *controller = (SourceCodeViewController *)segue.destinationViewController; 27 | controller.sourceCode = self.sourceCode; 28 | } 29 | 30 | 31 | @end 32 | -------------------------------------------------------------------------------- /Example/OCUIExample/Podfile.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CombineObjectObjc (1.0.0) 3 | - DriverListNode (3.4.0) 4 | - Masonry (1.1.0) 5 | 6 | DEPENDENCIES: 7 | - CombineObjectObjc (from `./Pods/CombineObjectObjc/CombineObjectObjc.podspec`) 8 | - DriverListNode (from `./Pods/DriverListNode/DriverListNode.podspec`) 9 | - Masonry 10 | 11 | SPEC REPOS: 12 | trunk: 13 | - Masonry 14 | 15 | EXTERNAL SOURCES: 16 | CombineObjectObjc: 17 | :path: "./Pods/CombineObjectObjc/CombineObjectObjc.podspec" 18 | DriverListNode: 19 | :path: "./Pods/DriverListNode/DriverListNode.podspec" 20 | 21 | SPEC CHECKSUMS: 22 | CombineObjectObjc: f003a1717e8736dd95e20f7e9c7d9b7d1944e2ad 23 | DriverListNode: da9da2338a357e503840aa8e447e4a2edde5f862 24 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 25 | 26 | PODFILE CHECKSUM: d6ab10d777c720c95f3059eaa439951728780e79 27 | 28 | COCOAPODS: 1.8.0.beta.1 29 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineView+Category.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineView+Category.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CombineView.h" 11 | #import "CombineValue+Category.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface UIView (CombineView) 16 | 17 | - (void)setOtherCombineValue:(id)value identifier:(NSString *)identifier; 18 | 19 | @end 20 | 21 | @interface UILabel (CombineView) 22 | @end 23 | 24 | @interface UIProgressView (CombineView) 25 | @end 26 | 27 | @interface UITextField (CombineView) 28 | @end 29 | 30 | @interface UISlider (CombineView) 31 | @end 32 | 33 | @interface UISwitch (CombineView) 34 | @end 35 | 36 | @interface UITextView (CombineView) 37 | @end 38 | 39 | NS_ASSUME_NONNULL_END 40 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Manifest.lock: -------------------------------------------------------------------------------- 1 | PODS: 2 | - CombineObjectObjc (1.0.0) 3 | - DriverListNode (3.4.0) 4 | - Masonry (1.1.0) 5 | 6 | DEPENDENCIES: 7 | - CombineObjectObjc (from `./Pods/CombineObjectObjc/CombineObjectObjc.podspec`) 8 | - DriverListNode (from `./Pods/DriverListNode/DriverListNode.podspec`) 9 | - Masonry 10 | 11 | SPEC REPOS: 12 | trunk: 13 | - Masonry 14 | 15 | EXTERNAL SOURCES: 16 | CombineObjectObjc: 17 | :path: "./Pods/CombineObjectObjc/CombineObjectObjc.podspec" 18 | DriverListNode: 19 | :path: "./Pods/DriverListNode/DriverListNode.podspec" 20 | 21 | SPEC CHECKSUMS: 22 | CombineObjectObjc: f003a1717e8736dd95e20f7e9c7d9b7d1944e2ad 23 | DriverListNode: da9da2338a357e503840aa8e447e4a2edde5f862 24 | Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 25 | 26 | PODFILE CHECKSUM: d6ab10d777c720c95f3059eaa439951728780e79 27 | 28 | COCOAPODS: 1.8.0.beta.1 29 | -------------------------------------------------------------------------------- /Sources/UI/Other Views/View/OCUIView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIView.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/23. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUINode+OCUIView.h" 11 | #import "OCUICreate+OCUIView.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | @class OCUIView; 15 | 16 | @interface OCUIView : OCUINode 17 | 18 | @end 19 | 20 | //####################(RenderView)#################### 21 | @interface OCUIView (RenderView) 22 | 23 | @property (nonatomic, strong, readonly) UIView *uiRenderView; 24 | 25 | + (void)loadViewWithClassName:(Class)className 26 | makeViewBlock:(V(^)(N node))makeViewBlock 27 | configViewBlock:(void(^)(V view, N node))configViewBlock; 28 | 29 | - (void)configViewWithClassName:(Class)className; 30 | 31 | @end 32 | 33 | NS_ASSUME_NONNULL_END 34 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHTableViewBaseModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZHTableViewBaseModel.h 3 | // Pods 4 | // 5 | // Created by 张行 on 2017/3/18. 6 | // 7 | // 8 | #import 9 | @class ZHTableViewBaseModel; 10 | 11 | typedef CGFloat (^ZHTableViewBaseModelCustomHeightCompletionHandle)(UITableView *tableView, NSIndexPath *indexPath, ZHTableViewBaseModel *model); 12 | 13 | /** 14 | 配置 Cell Header Footer 的数据 Model 15 | */ 16 | @interface ZHTableViewBaseModel : NSObject 17 | 18 | /** 19 | 标识符 20 | */ 21 | @property (nonatomic, copy) NSString *identifier; 22 | /** 23 | 自定义类 Class 24 | */ 25 | @property (nonatomic, strong) Class anyClass; 26 | /** 27 | 高度 默认为 NSNotFound 28 | */ 29 | @property (nonatomic, assign) CGFloat height; 30 | /** 31 | * 自定义高度 32 | */ 33 | @property (nonatomic, copy) ZHTableViewBaseModelCustomHeightCompletionHandle customHeightCompletionHandle; 34 | 35 | @end 36 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/DriverListNode.podspec: -------------------------------------------------------------------------------- 1 | # 2 | # Be sure to run `pod lib lint ZHTableViewGroup.podspec' to ensure this is a 3 | # valid spec before submitting. 4 | # 5 | # Any lines starting with a # are optional, but their use is encouraged 6 | # To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html 7 | # 8 | 9 | Pod::Spec.new do |s| 10 | s.name = 'DriverListNode' 11 | s.version = '3.4.0' 12 | s.summary = 'Manger UITableView DataSource More Cell Style' 13 | 14 | s.homepage = 'https://github.com/josercc/ZHTableViewGroup' 15 | s.license = { :type => 'MIT', :file => 'LICENSE' } 16 | s.author = { '15038777234' => '15038777234@163.com' } 17 | s.source = { :git => 'https://github.com/josercc/ZHTableViewGroup.git', :tag => s.version.to_s } 18 | s.ios.deployment_target = '8.0' 19 | s.source_files = 'Sources/DriverList/**/*.{h,m}' 20 | end 21 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/Masonry.h: -------------------------------------------------------------------------------- 1 | // 2 | // Masonry.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for Masonry. 12 | FOUNDATION_EXPORT double MasonryVersionNumber; 13 | 14 | //! Project version string for Masonry. 15 | FOUNDATION_EXPORT const unsigned char MasonryVersionString[]; 16 | 17 | #import "MASUtilities.h" 18 | #import "View+MASAdditions.h" 19 | #import "View+MASShorthandAdditions.h" 20 | #import "ViewController+MASAdditions.h" 21 | #import "NSArray+MASAdditions.h" 22 | #import "NSArray+MASShorthandAdditions.h" 23 | #import "MASConstraint.h" 24 | #import "MASCompositeConstraint.h" 25 | #import "MASViewAttribute.h" 26 | #import "MASViewConstraint.h" 27 | #import "MASConstraintMaker.h" 28 | #import "MASLayoutConstraint.h" 29 | #import "NSLayoutConstraint+MASDebugAdditions.h" 30 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverGroup.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverGroup.h 3 | // ZHTableViewGroup iOS 4 | // 5 | // Created by 张行 on 2019/8/8. 6 | // Copyright © 2019 15038777234. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DriverNode.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | #define MakeDriverNode ^(DriverGroup *group) 15 | 16 | @interface DriverGroup : NSObject 17 | 18 | @property (nonatomic, copy, readonly) NSMutableArray *groupCells; 19 | @property (nonatomic, strong, readonly) DriverNode *groupHeader; 20 | @property (nonatomic, strong, readonly) DriverNode *groupFooter; 21 | @property (nonatomic, assign, readonly) UIEdgeInsets groupSectionEdgeInsets; 22 | 23 | - (DriverNode *(^)(DriverNode *))makeHeader; 24 | - (DriverNode *(^)(DriverNode *))makeFooter; 25 | - (DriverNode *(^)(DriverNode *))makeCell; 26 | - (DriverNode *(^)(UIColor *))makeSpeacer; 27 | - (DriverGroup *(^)(UIEdgeInsets))sectionEdgeInsets; 28 | 29 | @end 30 | 31 | NS_ASSUME_NONNULL_END 32 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHAutoConfigurationCollectionViewDelegate.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZHAutoConfigurationCollectionViewDelegate.h 3 | // Pods 4 | // 5 | // Created by 张行 on 2017/4/20. 6 | // 7 | // 8 | 9 | #import 10 | 11 | typedef NS_ENUM(NSUInteger, ZHCollectionViewCustomHeightType) { 12 | ZHCollectionViewCustomHeightTypeCell, 13 | ZHCollectionViewCustomHeightTypeHeader, 14 | ZHCollectionViewCustomHeightTypeFooter 15 | }; 16 | 17 | @class ZHCollectionViewDataSource; 18 | 19 | /** 20 | 自动配置 UICollectionView 的数据源和代理 21 | 默认实现 UICollectionView 的数据源方法和代理方法如下 22 | */ 23 | @interface ZHAutoConfigurationCollectionViewDelegate : NSObject 24 | 25 | /** 26 | 初始化自动配置ZHAutoConfigurationCollectionViewDelegate对象 27 | 28 | @param dataSource ZHCollectionViewDataSource 29 | @return ZHAutoConfigurationCollectionViewDelegate 30 | */ 31 | - (instancetype)initWithDataSource:(ZHCollectionViewDataSource *)dataSource; 32 | 33 | @end 34 | 35 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/ViewController+MASAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.h 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "MASUtilities.h" 10 | #import "MASConstraintMaker.h" 11 | #import "MASViewAttribute.h" 12 | 13 | #ifdef MAS_VIEW_CONTROLLER 14 | 15 | @interface MAS_VIEW_CONTROLLER (MASAdditions) 16 | 17 | /** 18 | * following properties return a new MASViewAttribute with appropriate UILayoutGuide and NSLayoutAttribute 19 | */ 20 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuide; 21 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuide; 22 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideTop; 23 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_topLayoutGuideBottom; 24 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideTop; 25 | @property (nonatomic, strong, readonly) MASViewAttribute *mas_bottomLayoutGuideBottom; 26 | 27 | 28 | @end 29 | 30 | #endif 31 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 swiftkitui 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Example/OCUIExample/OCUIExample/PageRowView.m: -------------------------------------------------------------------------------- 1 | // 2 | // PageRowView.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/10. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "PageRowView.h" 10 | 11 | @implementation PageRowView 12 | 13 | - (instancetype)initWithTitle:(NSString *)title 14 | subTitle:(NSString *)subTitle { 15 | if (self = [super init]) { 16 | _title = title; 17 | _subTitle = subTitle; 18 | } 19 | return self; 20 | } 21 | 22 | - (void)bodyUI:(OCUICreate *)c { 23 | c.Text(self.title) 24 | .bold(); 25 | if (self.subTitle) { 26 | c.Text(self.subTitle); 27 | } 28 | } 29 | 30 | @end 31 | 32 | @implementation OCUICreate (PageRowView) 33 | 34 | - (PageRowView *(^)(NSString *title, NSString *subTitle))PageRow { 35 | return ^PageRowView *(NSString *title, NSString *subTitle) { 36 | return [self addElenment:PageRow(title, subTitle)]; 37 | }; 38 | } 39 | 40 | @end 41 | 42 | FOUNDATION_EXPORT PageRowView *PageRow(NSString *title, NSString *subTitle) { 43 | return [[PageRowView alloc] initWithTitle:title subTitle:subTitle]; 44 | } 45 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHCollectionViewBaseModel.h: -------------------------------------------------------------------------------- 1 | // 2 | // ZHCollectionViewBaseModel.h 3 | // Pods 4 | // 5 | // Created by 张行 on 2018/2/6. 6 | // 7 | // 8 | 9 | #import 10 | @class ZHCollectionViewBaseModel; 11 | 12 | typedef CGFloat (^ZHCollectionViewBaseModelCustomHeightCompletionHandle)(UICollectionView *collectionView, NSIndexPath *indexPath, ZHCollectionViewBaseModel *model); 13 | 14 | /** 15 | 配置 Cell Header Footer 的数据 Model 16 | */ 17 | @interface ZHCollectionViewBaseModel : NSObject 18 | 19 | /** 20 | 标识符 21 | */ 22 | @property (nonatomic, copy) NSString *identifier; 23 | /** 24 | 自定义类 Class 25 | */ 26 | @property (nonatomic, strong) Class anyClass; 27 | /** 28 | 高度 默认为 NSNotFound 29 | height 属性废弃 用size 30 | */ 31 | //@property (nonatomic, assign) CGFloat height; 32 | 33 | 34 | /** 35 | * 设置 UICollectionCell UICollectionReusableView 的大小 36 | * 默认 CGSizeZero 37 | */ 38 | @property (nonatomic, assign) CGSize size; 39 | 40 | /** 41 | * 自定义高度 42 | */ 43 | @property (nonatomic, copy) ZHCollectionViewBaseModelCustomHeightCompletionHandle customHeightCompletionHandle; 44 | 45 | @end 46 | 47 | -------------------------------------------------------------------------------- /Sources/Layout/Stack/OCUIStack.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIStack.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/3. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUISpacer.h" 11 | #import "OCUIView.h" 12 | #import "OCUIAlignment.h" 13 | 14 | NS_ASSUME_NONNULL_BEGIN 15 | @class OCUIStack; 16 | 17 | @interface OCUIStack : OCUINode 18 | 19 | @end 20 | 21 | @interface OCUIStack (UIView) 22 | 23 | @property (nonatomic, strong, readonly) UIView *contentView; 24 | @property (nonatomic, copy, readonly) NSArray *allLayoutViews; 25 | 26 | @end 27 | 28 | @interface OCUIStack (Layout) 29 | 30 | + (void)loadLayoutWithClassName:(Class)className 31 | layoutBlock:(void(^)(S stack))layoutBlock; 32 | 33 | @end 34 | 35 | @interface OCUIStack (Spacer) 36 | 37 | /// 获取所有浮动布局的 Spacer 数组 38 | - (NSArray *)allFloatSpacers; 39 | - (OCUISpacer *)layoutSpacerWithView:(UIView *)view; 40 | 41 | @end 42 | 43 | @interface OCUIStack (OCUIView) 44 | 45 | - (OCUIView *)viewNodeWithRenderView:(UIView *)view; 46 | 47 | @end 48 | 49 | 50 | NS_ASSUME_NONNULL_END 51 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2017 15038777234 <15038777234@163.com> 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. 20 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Sources/Parse/iOS/UIView+LayoutSubViews.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIView+LayoutSubViews.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/6. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "UIView+LayoutSubViews.h" 10 | #import 11 | #import "OCUILayoutItem.h" 12 | 13 | @implementation UIView (LayoutSubViews) 14 | 15 | + (void)load { 16 | Method layoutSubviews = class_getInstanceMethod(self, @selector(layoutSubviews)); 17 | Method ocuiLayoutSubviews = class_getInstanceMethod(self, @selector(ocuiLayoutSubviews)); 18 | method_exchangeImplementations(layoutSubviews, ocuiLayoutSubviews); 19 | } 20 | 21 | - (void)ocuiLayoutSubviews { 22 | [self ocuiLayoutSubviews]; 23 | CGFloat width = CGRectGetWidth(self.frame); 24 | if (self.intrinsicContentSize.width >= 0) { 25 | width = self.intrinsicContentSize.width; 26 | } 27 | [self.widthLayoutItem updateValue:width]; 28 | CGFloat height = CGRectGetHeight(self.frame); 29 | if (self.intrinsicContentSize.height >= 0) { 30 | height = self.intrinsicContentSize.height; 31 | } 32 | [self.heightLayoutItem updateValue:height]; 33 | } 34 | 35 | 36 | @end 37 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 combineobject 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/Text/OCUINode+OCUIText.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUIText.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/11. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | #import "OCUIColor.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | //####################(Bind)#################### 15 | @interface OCUINode (OCUITextBind) 16 | 17 | /// 绑定值可变的 18 | @property (nonatomic, strong, readonly) CombineBind *uiTextBind; 19 | /// 添加字符串绑定 20 | - (OCUINode *(^)(CombineBind *))textBind; 21 | 22 | @end 23 | 24 | //####################(TextStyle)#################### 25 | @interface OCUINode (OCUITextStyle) 26 | 27 | /// 是否使用了粗体 28 | @property (nonatomic, assign, readonly) BOOL isUIBold; 29 | /// 是否使用斜体 30 | @property (nonatomic, assign, readonly) BOOL isUIItalic; 31 | 32 | /// 设置使用粗体 33 | - (OCUINode *(^)(void))bold; 34 | /// 设置斜体 35 | - (OCUINode *(^)(void))italic; 36 | 37 | @end 38 | 39 | @interface OCUINode (OCUITextColor) 40 | 41 | @property (nonatomic, strong, readonly) OCUIColor *uiForegroundColor; 42 | 43 | - (OCUINode *(^)(OCUIColor *))foregroundColor; 44 | 45 | @end 46 | 47 | NS_ASSUME_NONNULL_END 48 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/DemoCollectionController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DemoCollectionController.m 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/20. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "DemoCollectionController.h" 10 | 11 | @interface DemoCollectionController () 12 | 13 | @property (nonatomic, strong) UICollectionView *collectionView; 14 | 15 | @end 16 | 17 | @implementation DemoCollectionController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self.view addSubview:self.collectionView]; 22 | if (self.configCollectionViewDriver) { 23 | self.configCollectionViewDriver(self.collectionView); 24 | } 25 | } 26 | 27 | #pragma mark - Getter 28 | - (UICollectionView *)collectionView{ 29 | if (!_collectionView) { 30 | UICollectionViewFlowLayout *flowLayout = [[UICollectionViewFlowLayout alloc] init]; 31 | _collectionView = [[UICollectionView alloc] initWithFrame:self.view.bounds collectionViewLayout:flowLayout]; 32 | _collectionView.backgroundColor = [UIColor whiteColor]; 33 | } 34 | return _collectionView; 35 | } 36 | 37 | @end 38 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2011-2012 Masonry Team - https://github.com/Masonry 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy 4 | of this software and associated documentation files (the "Software"), to deal 5 | in the Software without restriction, including without limitation the rights 6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 7 | copies of the Software, and to permit persons to whom the Software is 8 | furnished to do so, subject to the following conditions: 9 | 10 | The above copyright notice and this permission notice shall be included in 11 | all copies or substantial portions of the Software. 12 | 13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 19 | THE SOFTWARE. -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/NavigationView/OCUINode+OCUINavigationView.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUINavigationView.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUIText; 13 | 14 | typedef NS_ENUM(NSUInteger, OCUITitleDisplayMode) { 15 | OCUITitleDisplayModeAutomatic, 16 | OCUITitleDisplayModeInline, 17 | OCUITitleDisplayModeLarge 18 | }; 19 | 20 | @interface OCUINode (OCUINavigationViewBar) 21 | 22 | @property (nonatomic, strong, readonly) OCUIText *uiNavigationBarTitleText; 23 | @property (nonatomic, assign, readonly) OCUITitleDisplayMode uiTitleDisplayMode; 24 | 25 | - (OCUINode *(^)(OCUIText *, OCUITitleDisplayMode))navigationBarTitle; 26 | 27 | @end 28 | 29 | @interface OCUINode (OCUINavigationBarItems) 30 | 31 | @property (nonatomic, copy, readonly) NSArray *uiLeadingNavigationBarItems; 32 | @property (nonatomic, copy, readonly) NSArray *uiTrailingNavigationBarItems; 33 | 34 | - (OCUINode *(^)(void(^_Nullable leadingBlock)(OCUICreate *c), void(^_Nullable trailingBlock)(OCUICreate *c)))navigationBarItems; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/DemoViewController.m: -------------------------------------------------------------------------------- 1 | // 2 | // DemoViewController.m 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "DemoViewController.h" 10 | 11 | @interface DemoViewController () 12 | 13 | @property (nonatomic, strong) UITableView *tableView; 14 | 15 | @end 16 | 17 | @implementation DemoViewController 18 | 19 | - (void)viewDidLoad { 20 | [super viewDidLoad]; 21 | [self.view addSubview:self.tableView]; 22 | if (self.configTableViewDriver) { 23 | self.configTableViewDriver(self.tableView); 24 | } 25 | self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Action" style:UIBarButtonItemStylePlain target:self action:@selector(actionClick)]; 26 | } 27 | 28 | - (void)actionClick { 29 | if (self.action) { 30 | self.action(self.tableView); 31 | } 32 | } 33 | 34 | #pragma mark - Getter 35 | - (UITableView *)tableView { 36 | if (!_tableView) { 37 | _tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStylePlain]; 38 | } 39 | return _tableView; 40 | } 41 | 42 | @end 43 | -------------------------------------------------------------------------------- /Sources/UI/ControllerViews/List/OCUIList.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIList.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/8/27. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIList.h" 10 | 11 | @implementation OCUIList 12 | 13 | - (void)loadElenmentInContentView:(UIView *)contentView { 14 | UITableView *tableView = (UITableView *)self.uiRenderView; 15 | // [tableView reloadListWithDriverBlock:^{ 16 | // [self.elenments enumerateObjectsUsingBlock:^(OCUINode * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 17 | // if (![obj isKindOfClass:[OCUISection class]]) { 18 | // return; 19 | // } 20 | // OCUISection *section = (OCUISection *)obj; 21 | // DriverGroup *group = ZHDriverGroup(); 22 | // if (section.headerNodes.count > 0) { 23 | // DriverNode *header = ZHDriverHeader(UITableViewHeaderFooterView.self, ^DriverBlockContent * _Nonnull{ 24 | // DriverBlockContent *content = [[DriverBlockContent alloc] init]; 25 | // return contentView; 26 | // }); 27 | // } 28 | // }]; 29 | // }]; 30 | } 31 | 32 | @end 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/NSArray+MASShorthandAdditions.h: -------------------------------------------------------------------------------- 1 | // 2 | // NSArray+MASShorthandAdditions.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 22/07/13. 6 | // Copyright (c) 2013 Jonas Budelmann. All rights reserved. 7 | // 8 | 9 | #import "NSArray+MASAdditions.h" 10 | 11 | #ifdef MAS_SHORTHAND 12 | 13 | /** 14 | * Shorthand array additions without the 'mas_' prefixes, 15 | * only enabled if MAS_SHORTHAND is defined 16 | */ 17 | @interface NSArray (MASShorthandAdditions) 18 | 19 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *make))block; 20 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *make))block; 21 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *make))block; 22 | 23 | @end 24 | 25 | @implementation NSArray (MASShorthandAdditions) 26 | 27 | - (NSArray *)makeConstraints:(void(^)(MASConstraintMaker *))block { 28 | return [self mas_makeConstraints:block]; 29 | } 30 | 31 | - (NSArray *)updateConstraints:(void(^)(MASConstraintMaker *))block { 32 | return [self mas_updateConstraints:block]; 33 | } 34 | 35 | - (NSArray *)remakeConstraints:(void(^)(MASConstraintMaker *))block { 36 | return [self mas_remakeConstraints:block]; 37 | } 38 | 39 | @end 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverNode.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverNode.h 3 | // ZHTableViewGroup iOS 4 | // 5 | // Created by 张行 on 2019/8/16. 6 | // Copyright © 2019 15038777234. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DriverBlockContent.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | 14 | #define MakeDriverBlock(ClassName) [ClassName class], ^(DriverBlockContent * content) 15 | 16 | /// 驱动 17 | @interface DriverNode : NSObject 18 | 19 | @property (nonatomic, strong, readonly) Class anyClass; 20 | @property (nonatomic, strong, readonly) NSString *identifier; 21 | @property (nonatomic, assign, readonly) CGFloat cellHeight; 22 | @property (nonatomic, assign, readonly) CGSize cellSize; 23 | @property (nonatomic, assign, readonly) NSUInteger cellNumber; 24 | @property (nonatomic, assign, readonly) BOOL enableCell; 25 | @property (nonatomic, strong, readonly) DriverBlockContent *blockContent; 26 | 27 | + (instancetype)makeDriverAnyClass:(Class)anyClass 28 | block:(DriverBlockContent *(^)(void))block; 29 | 30 | 31 | - (DriverNode *(^)(CGFloat))height; 32 | - (DriverNode *(^)(NSUInteger))number; 33 | - (DriverNode *(^)(BOOL))enable; 34 | - (DriverNode *(^)(CGSize))size; 35 | 36 | @end 37 | 38 | NS_ASSUME_NONNULL_END 39 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/DriverList.h: -------------------------------------------------------------------------------- 1 | // 2 | // DriverList.h 3 | // DriverList 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "DriverGroup.h" 11 | 12 | NS_ASSUME_NONNULL_BEGIN 13 | @class DriverList; 14 | 15 | #define MakeDriverGroup ^(DriverList *list) 16 | /// 当前正在布局的DriverList 17 | static DriverList *currentDriverList; 18 | /// 当前正在布局的 Group 19 | static DriverGroup *currentDriverGroup; 20 | 21 | @interface DriverList : NSObject 22 | 23 | @property (nonatomic, strong, readonly) NSMutableArray *groups; 24 | 25 | - (DriverGroup *(^)(void(^)(DriverGroup *group)))makeGroup; 26 | 27 | @end 28 | 29 | FOUNDATION_EXTERN DriverList *ZHDriverList(DriverList *); 30 | FOUNDATION_EXPORT DriverGroup *ZHDriverGroup(void); 31 | FOUNDATION_EXPORT DriverNode *ZHDriverCell(Class className, DriverBlockContent *(^block)(void)); 32 | FOUNDATION_EXPORT DriverNode *ZHDriverSpacer(UIColor *backgroundColor,DriverBlockContent *(^block)(void)); 33 | FOUNDATION_EXPORT DriverNode *ZHDriverHeader(Class className, DriverBlockContent *(^block)(void)); 34 | FOUNDATION_EXPORT DriverNode *ZHDriverFooter(Class className, DriverBlockContent *(^block)(void)); 35 | 36 | 37 | NS_ASSUME_NONNULL_END 38 | -------------------------------------------------------------------------------- /Sources/Layout/HStack/OCUIHStack.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIHStack.m 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIHStack.h" 10 | #import "OCUIView.h" 11 | 12 | @implementation OCUIHStack 13 | 14 | - (CGFloat)intrinsicContentSizeWidth { 15 | __block CGFloat intrinsicContentSizeWidth = 0; 16 | [self.elenments enumerateObjectsUsingBlock:^(OCUINode * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { 17 | UIView *view; 18 | if ([obj isKindOfClass:[OCUIView class]]) { 19 | OCUIView *nodeView = (OCUIView *)obj; 20 | view = nodeView.uiRenderView; 21 | } 22 | if (view) { 23 | intrinsicContentSizeWidth += view.intrinsicContentSize.width; 24 | } 25 | }]; 26 | return intrinsicContentSizeWidth; 27 | } 28 | 29 | @end 30 | 31 | @implementation OCUIHStack (alignment) 32 | 33 | - (OCUIVerticalAlignment)uiAlignment { 34 | return (OCUIVerticalAlignment)[self.propertyGet(@selector(uiAlignment)) integerValue]; 35 | } 36 | 37 | - (OCUIHStack * _Nonnull (^)(OCUIVerticalAlignment))alignment { 38 | return ^OCUIHStack *(OCUIVerticalAlignment alignment) { 39 | self.propertySet(@(alignment),@selector(uiAlignment)); 40 | return self; 41 | }; 42 | } 43 | 44 | @end 45 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/CombineObjectObjc/Sources/CombineObject/CombineBind.h: -------------------------------------------------------------------------------- 1 | // 2 | // CombineBind.h 3 | // CombineObject 4 | // 5 | // Created by 张行 on 2019/8/2. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "CombineWeakValue.h" 11 | #import "CombineWeakView.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @class CombineBindBlockContent; 16 | 17 | @interface CombineBindBlockContent> : NSObject 18 | 19 | @property (nonatomic, strong) CombineWeakValue * value; 20 | @property (nonatomic, strong) CombineWeakView * view; 21 | 22 | - (void)registerCombineViewClass:(Class)viewClass 23 | identifier:(NSString *)identifier 24 | block:(void(^)(T value, id view))block; 25 | 26 | @end 27 | 28 | @interface CombineBind> : NSObject 29 | 30 | @property (nonatomic) T wrappedContent; 31 | @property (nonatomic, copy) void(^contentChanged)(T content); 32 | @property (nonatomic, copy) void(^customSetWrappedValueBlock)(CombineBindBlockContent *content); 33 | @property (nonatomic, copy) NSMutableArray *views; 34 | 35 | - (instancetype)initWithContent:(id)content; 36 | 37 | @end 38 | 39 | FOUNDATION_EXPORT CombineBind *CombineBindMaker(id value); 40 | 41 | NS_ASSUME_NONNULL_END 42 | -------------------------------------------------------------------------------- /Sources/Core/OCUIViewParse.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUIViewParse.h 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/3. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import 10 | #import "OCUIView.h" 11 | #import "OCUIStack.h" 12 | 13 | NS_ASSUME_NONNULL_BEGIN 14 | 15 | @interface OCUIViewParse : NSObject 16 | 17 | + (instancetype)shareParse; 18 | 19 | @end 20 | 21 | //####################(MakeView)#################### 22 | @interface OCUIViewParse (MakeView) 23 | 24 | - (void)addMakeViewBlock:(UIView *(^)(OCUIView *view))block 25 | className:(Class)className; 26 | - (UIView *(^)(OCUIView *))makeViewBlockWithClassName:(Class)className; 27 | 28 | @end 29 | 30 | //####################(ConfigView)#################### 31 | @interface OCUIViewParse (ConfigView) 32 | 33 | - (void)addConfigViewBlock:(void(^)(UIView *view, OCUIView *node))block 34 | className:(Class)className; 35 | - (void(^)(UIView *view, OCUIView *node))configViewBlockWithClassName:(Class)className; 36 | 37 | @end 38 | 39 | //####################(Layout)#################### 40 | @interface OCUIViewParse (Layout) 41 | 42 | - (void)addLayoutBlock:(void(^)(OCUIStack *stack))block 43 | className:(Class)className; 44 | - (void (^)(OCUIStack *))layoutViewBlockWithClassName:(Class)className; 45 | @end 46 | 47 | NS_ASSUME_NONNULL_END 48 | -------------------------------------------------------------------------------- /Sources/Layout/Spacer/OCUINode+OCUISpacer.m: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode+OCUISpacer.m 3 | // OCUIExample 4 | // 5 | // Created by 张行 on 2019/9/12. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUINode+OCUISpacer.h" 10 | 11 | @implementation OCUINode (OCUISpacerOffset) 12 | 13 | - (CGFloat)uiOffset { 14 | return MAX(self.uiMinOffset,[self.propertyGet(@selector(uiOffset)) floatValue]); 15 | } 16 | 17 | - (CGFloat)uiMinOffset { 18 | return [self.propertyGet(@selector(uiMinOffset)) floatValue]; 19 | } 20 | 21 | - (CGFloat)uiFlxedOffset { 22 | return [self.propertyGet(@selector(uiFlxedOffset)) floatValue]; 23 | } 24 | 25 | - (OCUINode *(^)(CGFloat))minOffset { 26 | return ^OCUINode *(CGFloat minOffset) { 27 | self.propertySet(@(NSNotFound),@selector(uiFlxedOffset)); 28 | self.propertySet(@(minOffset),@selector(uiMinOffset)); 29 | return self; 30 | }; 31 | } 32 | 33 | - (OCUINode *(^)(CGFloat))flxedOffset { 34 | return ^OCUINode *(CGFloat flxedOffset) { 35 | self.propertySet(@(flxedOffset),@selector(uiFlxedOffset)); 36 | self.propertySet(@(0),@selector(uiMinOffset)); 37 | return self; 38 | }; 39 | } 40 | 41 | - (OCUINode *(^)(CGFloat))offset { 42 | return ^OCUINode *(CGFloat offset) { 43 | self.propertySet(@(offset),@selector(uiOffset)); 44 | return self; 45 | }; 46 | } 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASViewAttribute.m: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.m 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | 11 | @implementation MASViewAttribute 12 | 13 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute { 14 | self = [self initWithView:view item:view layoutAttribute:layoutAttribute]; 15 | return self; 16 | } 17 | 18 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute { 19 | self = [super init]; 20 | if (!self) return nil; 21 | 22 | _view = view; 23 | _item = item; 24 | _layoutAttribute = layoutAttribute; 25 | 26 | return self; 27 | } 28 | 29 | - (BOOL)isSizeAttribute { 30 | return self.layoutAttribute == NSLayoutAttributeWidth 31 | || self.layoutAttribute == NSLayoutAttributeHeight; 32 | } 33 | 34 | - (BOOL)isEqual:(MASViewAttribute *)viewAttribute { 35 | if ([viewAttribute isKindOfClass:self.class]) { 36 | return self.view == viewAttribute.view 37 | && self.layoutAttribute == viewAttribute.layoutAttribute; 38 | } 39 | return [super isEqual:viewAttribute]; 40 | } 41 | 42 | - (NSUInteger)hash { 43 | return MAS_NSUINTROTATE([self.view hash], MAS_NSUINT_BIT / 2) ^ self.layoutAttribute; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Sources/Core/OCUINode.h: -------------------------------------------------------------------------------- 1 | // 2 | // OCUINode.h 3 | // OCUI 4 | // 5 | // Created by 张行 on 2019/8/22. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "OCUIHeader.h" 10 | 11 | NS_ASSUME_NONNULL_BEGIN 12 | @class OCUINode; 13 | @class OCUICreate; 14 | 15 | FOUNDATION_EXPORT id OCUINodeGetProperty(OCUINode *node, SEL sel); 16 | FOUNDATION_EXPORT void OCUINodeSetProperty(OCUINode *node, SEL sel, id property); 17 | FOUNDATION_EXPORT UIViewController *OCUIControllerWithView(UIView *view); 18 | 19 | @interface OCUINode : NSObject 20 | 21 | @property (nonatomic, copy, readonly) NSArray *elenments; 22 | - (void)updateElenments:(NSArray *)elenments; 23 | 24 | @end 25 | 26 | //####################(Init)#################### 27 | @interface OCUINode (Init) 28 | 29 | - (instancetype)initWithElenmentsBlock:(void(^)(OCUICreate *c))block; 30 | 31 | 32 | @end 33 | 34 | //####################(Property)#################### 35 | @interface OCUINode (Property) 36 | 37 | - (id(^)(SEL))propertyGet; 38 | - (void(^)(id,SEL))propertySet; 39 | 40 | @end 41 | 42 | //####################(Load)#################### 43 | @interface OCUINode (Load) 44 | 45 | - (void)loadElenmentInContentView:(UIView *)contentView; 46 | 47 | @end 48 | 49 | //####################(Frame)#################### 50 | @interface OCUINode (Frame) 51 | 52 | @property (nonatomic, assign, readonly) CGSize uiSize; 53 | - (OCUINode *(^)(CGSize))size; 54 | 55 | @end 56 | 57 | NS_ASSUME_NONNULL_END 58 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHTableViewHeaderFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZHTableViewHeaderFooter.m 3 | // Pods 4 | // 5 | // Created by 张行 on 2017/3/18. 6 | // 7 | // 8 | 9 | #import "ZHTableViewHeaderFooter.h" 10 | 11 | @implementation ZHTableViewHeaderFooter { 12 | ZHTableViewHeaderFooterCompletionHandle _headerBlock; 13 | ZHTableViewHeaderFooterCompletionHandle _footerBlock; 14 | } 15 | 16 | - (instancetype)initWithStyle:(ZHTableViewHeaderFooterStyle)style { 17 | if (self = [super init]) { 18 | _style = style; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)setHeaderFooter:(UITableViewHeaderFooterView *)headerFooter section:(NSUInteger)section { 24 | switch (self.style) { 25 | case ZHTableViewHeaderFooterStyleHeader: { 26 | if (_headerBlock) { 27 | _headerBlock(headerFooter,section); 28 | } 29 | } 30 | break; 31 | case ZHTableViewHeaderFooterStyleFooter: { 32 | if (_footerBlock) { 33 | _footerBlock(headerFooter,section); 34 | } 35 | } 36 | break; 37 | default: 38 | break; 39 | } 40 | } 41 | 42 | - (void)configurationHeader:(void (^)(UITableViewHeaderFooterView *header, NSUInteger section))block { 43 | _headerBlock = block; 44 | } 45 | 46 | -(void)configurationFooter:(void (^)(UITableViewHeaderFooterView *footer, NSUInteger section))block { 47 | _footerBlock = block; 48 | } 49 | 50 | @end 51 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASViewAttribute.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewAttribute.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 21/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASUtilities.h" 10 | 11 | /** 12 | * An immutable tuple which stores the view and the related NSLayoutAttribute. 13 | * Describes part of either the left or right hand side of a constraint equation 14 | */ 15 | @interface MASViewAttribute : NSObject 16 | 17 | /** 18 | * The view which the reciever relates to. Can be nil if item is not a view. 19 | */ 20 | @property (nonatomic, weak, readonly) MAS_VIEW *view; 21 | 22 | /** 23 | * The item which the reciever relates to. 24 | */ 25 | @property (nonatomic, weak, readonly) id item; 26 | 27 | /** 28 | * The attribute which the reciever relates to 29 | */ 30 | @property (nonatomic, assign, readonly) NSLayoutAttribute layoutAttribute; 31 | 32 | /** 33 | * Convenience initializer. 34 | */ 35 | - (id)initWithView:(MAS_VIEW *)view layoutAttribute:(NSLayoutAttribute)layoutAttribute; 36 | 37 | /** 38 | * The designated initializer. 39 | */ 40 | - (id)initWithView:(MAS_VIEW *)view item:(id)item layoutAttribute:(NSLayoutAttribute)layoutAttribute; 41 | 42 | /** 43 | * Determine whether the layoutAttribute is a size attribute 44 | * 45 | * @return YES if layoutAttribute is equal to NSLayoutAttributeWidth or NSLayoutAttributeHeight 46 | */ 47 | - (BOOL)isSizeAttribute; 48 | 49 | @end 50 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Sources/DriverList/ZHCollectionViewHeaderFooter.m: -------------------------------------------------------------------------------- 1 | // 2 | // ZHCollectionViewHeaderFooter.m 3 | // Pods 4 | // 5 | // Created by 张行 on 2018/2/6. 6 | // 7 | // 8 | 9 | #import "ZHCollectionViewHeaderFooter.h" 10 | 11 | @implementation ZHCollectionViewHeaderFooter { 12 | ZHCollectionViewHeaderFooterCompletionHandle _headerBlock; 13 | ZHCollectionViewHeaderFooterCompletionHandle _footerBlock; 14 | } 15 | 16 | - (instancetype)initWithStyle:(ZHCollectionViewHeaderFooterStyle)style { 17 | if (self = [super init]) { 18 | _style = style; 19 | } 20 | return self; 21 | } 22 | 23 | - (void)setHeaderFooter:(UICollectionReusableView *)headerFooter section:(NSUInteger)section { 24 | switch (self.style) { 25 | case ZHCollectionViewHeaderFooterStyleHeader: { 26 | if (_headerBlock) { 27 | _headerBlock(headerFooter,section); 28 | } 29 | } 30 | break; 31 | case ZHCollectionViewHeaderFooterStyleFooter: { 32 | if (_footerBlock) { 33 | _footerBlock(headerFooter,section); 34 | } 35 | } 36 | break; 37 | default: 38 | break; 39 | } 40 | } 41 | 42 | - (void)configurationHeader:(void (^)(UICollectionReusableView *header, NSUInteger section))block { 43 | _headerBlock = block; 44 | } 45 | 46 | -(void)configurationFooter:(void (^)(UICollectionReusableView *footer, NSUInteger section))block { 47 | _footerBlock = block; 48 | } 49 | 50 | @end 51 | 52 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/ViewController+MASAdditions.m: -------------------------------------------------------------------------------- 1 | // 2 | // UIViewController+MASAdditions.m 3 | // Masonry 4 | // 5 | // Created by Craig Siemens on 2015-06-23. 6 | // 7 | // 8 | 9 | #import "ViewController+MASAdditions.h" 10 | 11 | #ifdef MAS_VIEW_CONTROLLER 12 | 13 | @implementation MAS_VIEW_CONTROLLER (MASAdditions) 14 | 15 | - (MASViewAttribute *)mas_topLayoutGuide { 16 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 17 | } 18 | - (MASViewAttribute *)mas_topLayoutGuideTop { 19 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 20 | } 21 | - (MASViewAttribute *)mas_topLayoutGuideBottom { 22 | return [[MASViewAttribute alloc] initWithView:self.view item:self.topLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 23 | } 24 | 25 | - (MASViewAttribute *)mas_bottomLayoutGuide { 26 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 27 | } 28 | - (MASViewAttribute *)mas_bottomLayoutGuideTop { 29 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeTop]; 30 | } 31 | - (MASViewAttribute *)mas_bottomLayoutGuideBottom { 32 | return [[MASViewAttribute alloc] initWithView:self.view item:self.bottomLayoutGuide layoutAttribute:NSLayoutAttributeBottom]; 33 | } 34 | 35 | 36 | 37 | @end 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/Pods/Masonry/Masonry/MASViewConstraint.h: -------------------------------------------------------------------------------- 1 | // 2 | // MASViewConstraint.h 3 | // Masonry 4 | // 5 | // Created by Jonas Budelmann on 20/07/13. 6 | // Copyright (c) 2013 cloudling. All rights reserved. 7 | // 8 | 9 | #import "MASViewAttribute.h" 10 | #import "MASConstraint.h" 11 | #import "MASLayoutConstraint.h" 12 | #import "MASUtilities.h" 13 | 14 | /** 15 | * A single constraint. 16 | * Contains the attributes neccessary for creating a NSLayoutConstraint and adding it to the appropriate view 17 | */ 18 | @interface MASViewConstraint : MASConstraint 19 | 20 | /** 21 | * First item/view and first attribute of the NSLayoutConstraint 22 | */ 23 | @property (nonatomic, strong, readonly) MASViewAttribute *firstViewAttribute; 24 | 25 | /** 26 | * Second item/view and second attribute of the NSLayoutConstraint 27 | */ 28 | @property (nonatomic, strong, readonly) MASViewAttribute *secondViewAttribute; 29 | 30 | /** 31 | * initialises the MASViewConstraint with the first part of the equation 32 | * 33 | * @param firstViewAttribute view.mas_left, view.mas_width etc. 34 | * 35 | * @return a new view constraint 36 | */ 37 | - (id)initWithFirstViewAttribute:(MASViewAttribute *)firstViewAttribute; 38 | 39 | /** 40 | * Returns all MASViewConstraints installed with this view as a first item. 41 | * 42 | * @param view A view to retrieve constraints for. 43 | * 44 | * @return An array of MASViewConstraints. 45 | */ 46 | + (NSArray *)installedConstraintsForView:(MAS_VIEW *)view; 47 | 48 | @end 49 | -------------------------------------------------------------------------------- /Example/OCUIExample/Pods/DriverListNode/Example/DriverListNodeCocoPods/DriverListNodeCocoPods/AutomitcHeightCell.m: -------------------------------------------------------------------------------- 1 | // 2 | // AutomitcHeightCell.m 3 | // DriverListExample 4 | // 5 | // Created by 张行 on 2019/8/19. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | #import "AutomitcHeightCell.h" 10 | #import 11 | 12 | @interface AutomitcHeightCell () 13 | 14 | @property (nonatomic, strong) UILabel *multiLineLabel; 15 | 16 | @end 17 | 18 | @implementation AutomitcHeightCell 19 | 20 | - (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { 21 | if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { 22 | [self.contentView addSubview:self.multiLineLabel]; 23 | [self.multiLineLabel mas_makeConstraints:^(MASConstraintMaker *make) { 24 | make.leading.mas_offset(12); 25 | make.top.mas_offset(12); 26 | make.trailing.mas_offset(-12); 27 | }]; 28 | } 29 | return self; 30 | } 31 | 32 | - (CGSize)sizeThatFits:(CGSize)size { 33 | self.multiLineLabel.preferredMaxLayoutWidth = size.width - 12 - 12; 34 | return CGSizeMake(size.width, 12 + self.multiLineLabel.intrinsicContentSize.height + 12); 35 | } 36 | 37 | - (UILabel *)multiLineLabel { 38 | if (!_multiLineLabel) { 39 | _multiLineLabel = [[UILabel alloc] initWithFrame:CGRectZero]; 40 | _multiLineLabel.numberOfLines = 0; 41 | _multiLineLabel.lineBreakMode = NSLineBreakByTruncatingTail; 42 | } 43 | return _multiLineLabel; 44 | } 45 | 46 | @end 47 | -------------------------------------------------------------------------------- /Example/SwiftUIExample/SwiftUIExample/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // SwiftUIExample 4 | // 5 | // Created by 张行 on 2019/9/9. 6 | // Copyright © 2019 张行. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | 11 | @UIApplicationMain 12 | class AppDelegate: UIResponder, UIApplicationDelegate { 13 | 14 | 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | // Override point for customization after application launch. 18 | return true 19 | } 20 | 21 | // MARK: UISceneSession Lifecycle 22 | 23 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 24 | // Called when a new scene session is being created. 25 | // Use this method to select a configuration to create the new scene with. 26 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 27 | } 28 | 29 | func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) { 30 | // Called when the user discards a scene session. 31 | // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions. 32 | // Use this method to release any resources that were specific to the discarded scenes, as they will not return. 33 | } 34 | 35 | 36 | } 37 | 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## Build generated 6 | build/ 7 | DerivedData/ 8 | 9 | ## Various settings 10 | *.pbxuser 11 | !default.pbxuser 12 | *.mode1v3 13 | !default.mode1v3 14 | *.mode2v3 15 | !default.mode2v3 16 | *.perspectivev3 17 | !default.perspectivev3 18 | xcuserdata/ 19 | 20 | ## Other 21 | *.moved-aside 22 | *.xccheckout 23 | *.xcscmblueprint 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | *.ipa 28 | *.dSYM.zip 29 | *.dSYM 30 | 31 | # CocoaPods 32 | # 33 | # We recommend against adding the Pods directory to your .gitignore. However 34 | # you should judge for yourself, the pros and cons are mentioned at: 35 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 36 | # 37 | # Pods/ 38 | 39 | # Carthage 40 | # 41 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 42 | # Carthage/Checkouts 43 | 44 | Carthage/Build 45 | 46 | # fastlane 47 | # 48 | # It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the 49 | # screenshots whenever they are needed. 50 | # For more information about the recommended setup visit: 51 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 52 | 53 | fastlane/report.xml 54 | fastlane/Preview.html 55 | fastlane/screenshots/**/*.png 56 | fastlane/test_output 57 | 58 | # Code Injection 59 | # 60 | # After new code Injection tools there's a generated folder /iOSInjectionProject 61 | # https://github.com/johnno1962/injectionforxcode 62 | 63 | iOSInjectionProject/ 64 | --------------------------------------------------------------------------------