From 53b5f26c093f7bd0fd9bc3419cffcab891127f8d Mon Sep 17 00:00:00 2001 From: Sergei Taguer Date: Tue, 13 Mar 2018 12:16:22 -0700 Subject: [PATCH] Adding builders to the pod. Creating target for objc code. (#194) Adding the builders to the LayoutKitObjC pod. This required moving the objc enums to the header files, since objc builders cannot depend on Swift implementation. Since the cross-language integration depends on header files that match the module name, creating a new LayoutKitObjC target for Xcode build to use to match the cocoa pods build. Verified that build succeeds for Xcode and `pod lib lint`. --- LayoutKit-iOS copy-Info.plist | 26 ++ LayoutKit.xcodeproj/project.pbxproj | 411 ++++++++++++++---- .../xcschemes/LayoutKitObjC-iOS.xcscheme | 102 +++++ LayoutKitObjC.podspec | 6 +- LayoutKitObjCSampleApp/RotationLayout.h | 2 +- Sources/LayoutKit.h | 12 +- Sources/LayoutKitObjC.h | 31 ++ .../Builders/LOKBaseLayoutBuilder.h | 19 +- .../Builders/LOKBaseLayoutBuilder.m | 4 + .../Builders/LOKButtonLayoutBuilder.h | 11 + .../Builders/LOKButtonLayoutBuilder.m | 2 + .../Builders/LOKInsetLayoutBuilder.h | 6 +- .../Builders/LOKInsetLayoutBuilder.m | 4 +- .../Builders/LOKLabelLayoutBuilder.h | 2 + .../Builders/LOKLabelLayoutBuilder.m | 2 + .../Builders/LOKOverlayLayoutBuilder.h | 2 + .../Builders/LOKOverlayLayoutBuilder.m | 2 + .../Builders/LOKSizeLayoutBuilder.h | 2 + .../Builders/LOKSizeLayoutBuilder.m | 2 + .../Builders/LOKStackLayoutBuilder.h | 17 + .../Builders/LOKStackLayoutBuilder.m | 2 + .../Builders/LOKTextViewLayoutBuilder.h | 2 + .../Builders/LOKTextViewLayoutBuilder.m | 2 + Sources/ObjCSupport/LOKButtonLayoutType.swift | 9 +- Sources/ObjCSupport/LOKStackLayout.swift | 13 +- 25 files changed, 587 insertions(+), 106 deletions(-) create mode 100644 LayoutKit-iOS copy-Info.plist create mode 100644 LayoutKit.xcodeproj/xcshareddata/xcschemes/LayoutKitObjC-iOS.xcscheme create mode 100644 Sources/LayoutKitObjC.h diff --git a/LayoutKit-iOS copy-Info.plist b/LayoutKit-iOS copy-Info.plist new file mode 100644 index 00000000..3f5caf83 --- /dev/null +++ b/LayoutKit-iOS copy-Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 7.0.2 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/LayoutKit.xcodeproj/project.pbxproj b/LayoutKit.xcodeproj/project.pbxproj index d3e9643a..19fa8fa3 100644 --- a/LayoutKit.xcodeproj/project.pbxproj +++ b/LayoutKit.xcodeproj/project.pbxproj @@ -216,49 +216,88 @@ 75D94A3C1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; 75D94A3D1EA045F100A5FD01 /* OverlayLayoutTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3A1EA045F100A5FD01 /* OverlayLayoutTests.swift */; }; 75D94A401EA05D5A00A5FD01 /* OverlayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A3F1EA05D5A00A5FD01 /* OverlayViewController.swift */; }; - 7E233E56202CEA8A0012DD1E /* LOKLayoutSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E55202CEA8A0012DD1E /* LOKLayoutSection.swift */; }; - 7E233E58202CEAB80012DD1E /* LOKLayoutArrangementSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E57202CEAB80012DD1E /* LOKLayoutArrangementSection.swift */; }; - 7E233E5A202CEB0D0012DD1E /* LOKBatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E59202CEB0D0012DD1E /* LOKBatchUpdates.swift */; }; - 7E233E61202E2CC00012DD1E /* LOKButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E60202E2CC00012DD1E /* LOKButtonLayout.swift */; }; - 7E233E63202E5F870012DD1E /* LOKButtonLayoutType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E62202E5F870012DD1E /* LOKButtonLayoutType.swift */; }; - 7E233E65203129680012DD1E /* LOKOverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E64203129680012DD1E /* LOKOverlayLayout.swift */; }; - 7E233E67203130110012DD1E /* LOKTextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E66203130110012DD1E /* LOKTextViewLayout.swift */; }; - 7E7370EA2051A494007C19FF /* LOKInsetLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370E82051A494007C19FF /* LOKInsetLayoutBuilder.h */; }; - 7E7370EB2051A494007C19FF /* LOKInsetLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370E92051A494007C19FF /* LOKInsetLayoutBuilder.m */; }; - 7E7370EE2051E08F007C19FF /* LOKLabelLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370EC2051E08F007C19FF /* LOKLabelLayoutBuilder.h */; }; - 7E7370EF2051E08F007C19FF /* LOKLabelLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370ED2051E08F007C19FF /* LOKLabelLayoutBuilder.m */; }; - 7E7370F22051E3E6007C19FF /* LOKBaseLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F02051E3E6007C19FF /* LOKBaseLayoutBuilder.h */; }; - 7E7370F32051E3E6007C19FF /* LOKBaseLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F12051E3E6007C19FF /* LOKBaseLayoutBuilder.m */; }; - 7E7370F62051ED84007C19FF /* LOKButtonLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F42051ED84007C19FF /* LOKButtonLayoutBuilder.h */; }; - 7E7370F72051ED84007C19FF /* LOKButtonLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F52051ED84007C19FF /* LOKButtonLayoutBuilder.m */; }; - 7E7370FA2051F415007C19FF /* LOKOverlayLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F82051F415007C19FF /* LOKOverlayLayoutBuilder.h */; }; - 7E7370FB2051F415007C19FF /* LOKOverlayLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F92051F415007C19FF /* LOKOverlayLayoutBuilder.m */; }; - 7E7370FE2051F86D007C19FF /* LOKSizeLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370FC2051F86D007C19FF /* LOKSizeLayoutBuilder.h */; }; - 7E7370FF2051F86D007C19FF /* LOKSizeLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370FD2051F86D007C19FF /* LOKSizeLayoutBuilder.m */; }; - 7E73710220520CA8007C19FF /* LOKStackLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E73710020520CA8007C19FF /* LOKStackLayoutBuilder.h */; }; - 7E73710320520CA8007C19FF /* LOKStackLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E73710120520CA8007C19FF /* LOKStackLayoutBuilder.m */; }; - 7E73710620520F5F007C19FF /* LOKTextViewLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E73710420520F5F007C19FF /* LOKTextViewLayoutBuilder.h */; }; - 7E73710720520F5F007C19FF /* LOKTextViewLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E73710520520F5F007C19FF /* LOKTextViewLayoutBuilder.m */; }; - 7E7B83B6201E550F0001E279 /* LOKLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B5201E550F0001E279 /* LOKLayout.swift */; }; - 7E7B83B8201E554A0001E279 /* WrappedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B7201E554A0001E279 /* WrappedLayout.swift */; }; - 7E7B83BA201E55690001E279 /* ReverseWrappedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B9201E55690001E279 /* ReverseWrappedLayout.swift */; }; - 7E7B83BC201E55B30001E279 /* LOKFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BB201E55B30001E279 /* LOKFlexibility.swift */; }; - 7E7B83BE201E56080001E279 /* LOKLayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BD201E56080001E279 /* LOKLayoutArrangement.swift */; }; - 7E7B83C0201E56590001E279 /* LOKLayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BF201E56590001E279 /* LOKLayoutMeasurement.swift */; }; - 7E7B83C2201E57230001E279 /* LOKInsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C1201E57230001E279 /* LOKInsetLayout.swift */; }; - 7E7B83C4201E5EB20001E279 /* LOKAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C3201E5EB20001E279 /* LOKAlignment.swift */; }; - 7E7B83C6201E60BA0001E279 /* LOKLabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C5201E60BA0001E279 /* LOKLabelLayout.swift */; }; - 7E7B83C8201E8DDF0001E279 /* LOKBaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C7201E8DDF0001E279 /* LOKBaseLayout.swift */; }; - 7E7B83DD2020F7830001E279 /* LOKSizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83DC2020F7830001E279 /* LOKSizeLayout.swift */; }; - 7E7B83DF202101340001E279 /* LOKStackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83DE202101340001E279 /* LOKStackLayout.swift */; }; - 7E7B83E120279CD10001E279 /* LOKReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83E020279CD10001E279 /* LOKReloadableViewLayoutAdapter.swift */; }; 7E7B83E320281AF30001E279 /* RotationLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83E220281AF30001E279 /* RotationLayout.m */; }; + 7EC02CDC20570945000CEE24 /* LayoutKitObjC.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EC02CDA2057092B000CEE24 /* LayoutKitObjC.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7EEA2ABA201D18F20077A088 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EEA2AB9201D18F20077A088 /* AppDelegate.m */; }; 7EEA2ABD201D18F20077A088 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EEA2ABC201D18F20077A088 /* ViewController.m */; }; 7EEA2AC2201D18F20077A088 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 7EEA2AC1201D18F20077A088 /* Assets.xcassets */; }; 7EEA2AC8201D18F20077A088 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 7EEA2AC7201D18F20077A088 /* main.m */; }; 7EEA2ACD201D1FE90077A088 /* Launch Screen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 7EEA2ACC201D1FE90077A088 /* Launch Screen.storyboard */; }; - 7EEA2ACF201D24530077A088 /* LayoutKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0BCB755F1D8720110065E02A /* LayoutKit.framework */; }; + 7EECD0102053916C003DC4B1 /* StackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E51D8724800065E02A /* StackLayout.swift */; }; + 7EECD0112053916C003DC4B1 /* LOKLayoutArrangementSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E57202CEAB80012DD1E /* LOKLayoutArrangementSection.swift */; }; + 7EECD0122053916C003DC4B1 /* LOKButtonLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F52051ED84007C19FF /* LOKButtonLayoutBuilder.m */; }; + 7EECD0132053916C003DC4B1 /* LayoutAdapterTableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EF1D8724800065E02A /* LayoutAdapterTableView.swift */; }; + 7EECD0142053916C003DC4B1 /* AxisPoint.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E81D8724800065E02A /* AxisPoint.swift */; }; + 7EECD0152053916C003DC4B1 /* ReverseWrappedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B9201E55690001E279 /* ReverseWrappedLayout.swift */; }; + 7EECD0162053916C003DC4B1 /* Animation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D51D8724800065E02A /* Animation.swift */; }; + 7EECD0172053916C003DC4B1 /* AxisSize.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E91D8724800065E02A /* AxisSize.swift */; }; + 7EECD0182053916C003DC4B1 /* CollectionExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB61D887BCF00FCA22D /* CollectionExtension.swift */; }; + 7EECD0192053916C003DC4B1 /* NSAttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4468A31C1E46460B00341D07 /* NSAttributedStringExtension.swift */; }; + 7EECD01A2053916C003DC4B1 /* LayoutAdapterCollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EE1D8724800065E02A /* LayoutAdapterCollectionView.swift */; }; + 7EECD01B2053916C003DC4B1 /* ButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD5F8281DB43B4500108688 /* ButtonLayout.swift */; }; + 7EECD01C2053916C003DC4B1 /* LayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */; }; + 7EECD01D2053916C003DC4B1 /* InsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E21D8724800065E02A /* InsetLayout.swift */; }; + 7EECD01E2053916C003DC4B1 /* AxisFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E71D8724800065E02A /* AxisFlexibility.swift */; }; + 7EECD01F2053916C003DC4B1 /* LOKBatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E59202CEB0D0012DD1E /* LOKBatchUpdates.swift */; }; + 7EECD0202053916C003DC4B1 /* TextViewDefaultFont.swift in Sources */ = {isa = PBXBuildFile; fileRef = 448CEC0E1E4E0CB500F8AD9E /* TextViewDefaultFont.swift */; }; + 7EECD0212053916C003DC4B1 /* LOKAlignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C3201E5EB20001E279 /* LOKAlignment.swift */; }; + 7EECD0222053916C003DC4B1 /* ReloadableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F01D8724800065E02A /* ReloadableView.swift */; }; + 7EECD0232053916C003DC4B1 /* LOKLayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BD201E56080001E279 /* LOKLayoutArrangement.swift */; }; + 7EECD0242053916C003DC4B1 /* LOKLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B5201E550F0001E279 /* LOKLayout.swift */; }; + 7EECD0252053916C003DC4B1 /* OverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75D94A351EA01B6A00A5FD01 /* OverlayLayout.swift */; }; + 7EECD0262053916C003DC4B1 /* CGSizeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DC1D8724800065E02A /* CGSizeExtension.swift */; }; + 7EECD0272053916C003DC4B1 /* LOKOverlayLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F92051F415007C19FF /* LOKOverlayLayoutBuilder.m */; }; + 7EECD0282053916C003DC4B1 /* LOKReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83E020279CD10001E279 /* LOKReloadableViewLayoutAdapter.swift */; }; + 7EECD0292053916C003DC4B1 /* BatchUpdates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75ED1D8724800065E02A /* BatchUpdates.swift */; }; + 7EECD02A2053916C003DC4B1 /* LOKStackLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83DE202101340001E279 /* LOKStackLayout.swift */; }; + 7EECD02B2053916C003DC4B1 /* BaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E11D8724800065E02A /* BaseLayout.swift */; }; + 7EECD02C2053916C003DC4B1 /* LOKInsetLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C1201E57230001E279 /* LOKInsetLayout.swift */; }; + 7EECD02D2053916C003DC4B1 /* ConfigurableLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D81D8724800065E02A /* ConfigurableLayout.swift */; }; + 7EECD02E2053916C003DC4B1 /* LOKLayoutSection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E55202CEA8A0012DD1E /* LOKLayoutSection.swift */; }; + 7EECD02F2053916C003DC4B1 /* LOKLabelLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370ED2051E08F007C19FF /* LOKLabelLayoutBuilder.m */; }; + 7EECD0302053916C003DC4B1 /* ReloadableViewLayoutAdapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F31D8724800065E02A /* ReloadableViewLayoutAdapter.swift */; }; + 7EECD0312053916C003DC4B1 /* Axis.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D71D8724800065E02A /* Axis.swift */; }; + 7EECD0322053916C003DC4B1 /* ViewRecycler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EB1D8724800065E02A /* ViewRecycler.swift */; }; + 7EECD0332053916C003DC4B1 /* WrappedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83B7201E554A0001E279 /* WrappedLayout.swift */; }; + 7EECD0342053916C003DC4B1 /* UIKitSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75EA1D8724800065E02A /* UIKitSupport.swift */; }; + 7EECD0352053916C003DC4B1 /* LOKBaseLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C7201E8DDF0001E279 /* LOKBaseLayout.swift */; }; + 7EECD0362053916C003DC4B1 /* Layout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DD1D8724800065E02A /* Layout.swift */; }; + 7EECD0372053916C003DC4B1 /* LayoutArrangement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */; }; + 7EECD0382053916C003DC4B1 /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F11D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift */; }; + 7EECD0392053916C003DC4B1 /* Alignment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D41D8724800065E02A /* Alignment.swift */; }; + 7EECD03A2053916C003DC4B1 /* LOKTextViewLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E73710520520F5F007C19FF /* LOKTextViewLayoutBuilder.m */; }; + 7EECD03B2053916C003DC4B1 /* LOKLabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83C5201E60BA0001E279 /* LOKLabelLayout.swift */; }; + 7EECD03C2053916C003DC4B1 /* LOKStackLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E73710120520CA8007C19FF /* LOKStackLayoutBuilder.m */; }; + 7EECD03D2053916C003DC4B1 /* LOKOverlayLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E64203129680012DD1E /* LOKOverlayLayout.swift */; }; + 7EECD03E2053916C003DC4B1 /* IndexSetExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B193BB71D887BCF00FCA22D /* IndexSetExtension.swift */; }; + 7EECD03F2053916C003DC4B1 /* CFAbsoluteTimeExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75DB1D8724800065E02A /* CFAbsoluteTimeExtension.swift */; }; + 7EECD0402053916C003DC4B1 /* CGFloatExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B765F2B1DC0514F000BF1FD /* CGFloatExtension.swift */; }; + 7EECD0412053916C003DC4B1 /* LOKTextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E66203130110012DD1E /* LOKTextViewLayout.swift */; }; + 7EECD0422053916C003DC4B1 /* LOKInsetLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370E92051A494007C19FF /* LOKInsetLayoutBuilder.m */; }; + 7EECD0432053916C003DC4B1 /* SizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E41D8724800065E02A /* SizeLayout.swift */; }; + 7EECD0442053916C003DC4B1 /* LOKButtonLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E60202E2CC00012DD1E /* LOKButtonLayout.swift */; }; + 7EECD0452053916C003DC4B1 /* LOKLayoutMeasurement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BF201E56590001E279 /* LOKLayoutMeasurement.swift */; }; + 7EECD0462053916C003DC4B1 /* LabelLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75E31D8724800065E02A /* LabelLayout.swift */; }; + 7EECD0472053916C003DC4B1 /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F21D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift */; }; + 7EECD0482053916C003DC4B1 /* LOKSizeLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83DC2020F7830001E279 /* LOKSizeLayout.swift */; }; + 7EECD0492053916C003DC4B1 /* LOKSizeLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370FD2051F86D007C19FF /* LOKSizeLayoutBuilder.m */; }; + 7EECD04A2053916C003DC4B1 /* LOKFlexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E7B83BB201E55B30001E279 /* LOKFlexibility.swift */; }; + 7EECD04B2053916C003DC4B1 /* LOKButtonLayoutType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E233E62202E5F870012DD1E /* LOKButtonLayoutType.swift */; }; + 7EECD04C2053916C003DC4B1 /* Flexibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75D91D8724800065E02A /* Flexibility.swift */; }; + 7EECD04D2053916C003DC4B1 /* ReloadableViewUpdateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F41D8724800065E02A /* ReloadableViewUpdateManager.swift */; }; + 7EECD04E2053916C003DC4B1 /* TextViewLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F968141E425F5D00392763 /* TextViewLayout.swift */; }; + 7EECD04F2053916C003DC4B1 /* Text.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BD42BDB1DB5EAAD00E04AA3 /* Text.swift */; }; + 7EECD0502053916C003DC4B1 /* LOKBaseLayoutBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E7370F12051E3E6007C19FF /* LOKBaseLayoutBuilder.m */; }; + 7EECD0512053916C003DC4B1 /* StackView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0BCB75F51D8724800065E02A /* StackView.swift */; }; + 7EECD0552053916C003DC4B1 /* LOKButtonLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F42051ED84007C19FF /* LOKButtonLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD0562053916C003DC4B1 /* LOKOverlayLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F82051F415007C19FF /* LOKOverlayLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD0572053916C003DC4B1 /* LOKSizeLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370FC2051F86D007C19FF /* LOKSizeLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD0582053916C003DC4B1 /* LOKInsetLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370E82051A494007C19FF /* LOKInsetLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD0592053916C003DC4B1 /* LOKBaseLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370F02051E3E6007C19FF /* LOKBaseLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD05A2053916C003DC4B1 /* LOKStackLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E73710020520CA8007C19FF /* LOKStackLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD05B2053916C003DC4B1 /* LOKLabelLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E7370EC2051E08F007C19FF /* LOKLabelLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD05C2053916C003DC4B1 /* LOKTextViewLayoutBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E73710420520F5F007C19FF /* LOKTextViewLayoutBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7EECD0632053942F003DC4B1 /* LayoutKitObjC.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 7EECD0612053916C003DC4B1 /* LayoutKitObjC.framework */; }; AD2C36441EA5AFB500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */; }; ADE5FCC11EA5B5F3006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */; }; /* End PBXBuildFile section */ @@ -479,6 +518,7 @@ 7E7B83E020279CD10001E279 /* LOKReloadableViewLayoutAdapter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LOKReloadableViewLayoutAdapter.swift; sourceTree = ""; }; 7E7B83E220281AF30001E279 /* RotationLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = RotationLayout.m; sourceTree = ""; }; 7E7B83E420281B1F0001E279 /* RotationLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = RotationLayout.h; sourceTree = ""; }; + 7EC02CDA2057092B000CEE24 /* LayoutKitObjC.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LayoutKitObjC.h; sourceTree = ""; }; 7EEA2AB6201D18F20077A088 /* LayoutKitObjCSampleApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = LayoutKitObjCSampleApp.app; sourceTree = BUILT_PRODUCTS_DIR; }; 7EEA2AB8201D18F20077A088 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; 7EEA2AB9201D18F20077A088 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; @@ -488,6 +528,8 @@ 7EEA2AC6201D18F20077A088 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 7EEA2AC7201D18F20077A088 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; 7EEA2ACC201D1FE90077A088 /* Launch Screen.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = "Launch Screen.storyboard"; sourceTree = ""; }; + 7EECD0612053916C003DC4B1 /* LayoutKitObjC.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LayoutKitObjC.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 7EECD0622053916C003DC4B1 /* LayoutKit-iOS copy-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "LayoutKit-iOS copy-Info.plist"; path = "/Users/staguer/ws/lk0/LayoutKit-iOS copy-Info.plist"; sourceTree = ""; }; AD2C36421EA5AF9500550A03 /* ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterCollectionViewOverrideTests.swift; sourceTree = ""; }; ADE5FCBF1EA5B5C8006A3DC2 /* ReloadableViewLayoutAdapterTableViewOverrideTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ReloadableViewLayoutAdapterTableViewOverrideTests.swift; sourceTree = ""; }; /* End PBXFileReference section */ @@ -558,7 +600,14 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 7EEA2ACF201D24530077A088 /* LayoutKit.framework in Frameworks */, + 7EECD0632053942F003DC4B1 /* LayoutKitObjC.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 7EECD0522053916C003DC4B1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( ); runOnlyForDeploymentPostprocessing = 0; }; @@ -621,6 +670,7 @@ 7EEA2AB7201D18F20077A088 /* LayoutKitObjCSampleApp */, 0BCB75601D8720110065E02A /* Products */, 7EEA2ACE201D24530077A088 /* Frameworks */, + 7EECD0622053916C003DC4B1 /* LayoutKit-iOS copy-Info.plist */, ); sourceTree = ""; }; @@ -636,6 +686,7 @@ 0BCB75B61D8723B30065E02A /* ExampleLayouts.framework */, 0B2D09B01D8735E1007E487C /* LayoutKitSampleApp.app */, 7EEA2AB6201D18F20077A088 /* LayoutKitObjCSampleApp.app */, + 7EECD0612053916C003DC4B1 /* LayoutKitObjC.framework */, ); name = Products; sourceTree = ""; @@ -654,6 +705,7 @@ 0BCB75DD1D8724800065E02A /* Layout.swift */, 0BCB75DE1D8724800065E02A /* LayoutArrangement.swift */, 0BCB75621D8720110065E02A /* LayoutKit.h */, + 7EC02CDA2057092B000CEE24 /* LayoutKitObjC.h */, 0BCB75DF1D8724800065E02A /* LayoutMeasurement.swift */, 0BCB75E01D8724800065E02A /* Layouts */, 0BCB75E61D8724800065E02A /* Math */, @@ -866,14 +918,6 @@ buildActionMask = 2147483647; files = ( 0BCB75701D8720110065E02A /* LayoutKit.h in Headers */, - 7E7370F62051ED84007C19FF /* LOKButtonLayoutBuilder.h in Headers */, - 7E7370FA2051F415007C19FF /* LOKOverlayLayoutBuilder.h in Headers */, - 7E7370FE2051F86D007C19FF /* LOKSizeLayoutBuilder.h in Headers */, - 7E7370EA2051A494007C19FF /* LOKInsetLayoutBuilder.h in Headers */, - 7E7370F22051E3E6007C19FF /* LOKBaseLayoutBuilder.h in Headers */, - 7E73710220520CA8007C19FF /* LOKStackLayoutBuilder.h in Headers */, - 7E7370EE2051E08F007C19FF /* LOKLabelLayoutBuilder.h in Headers */, - 7E73710620520F5F007C19FF /* LOKTextViewLayoutBuilder.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -901,6 +945,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7EECD0532053916C003DC4B1 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7EECD0552053916C003DC4B1 /* LOKButtonLayoutBuilder.h in Headers */, + 7EECD0562053916C003DC4B1 /* LOKOverlayLayoutBuilder.h in Headers */, + 7EECD0572053916C003DC4B1 /* LOKSizeLayoutBuilder.h in Headers */, + 7EECD0582053916C003DC4B1 /* LOKInsetLayoutBuilder.h in Headers */, + 7EECD0592053916C003DC4B1 /* LOKBaseLayoutBuilder.h in Headers */, + 7EECD05A2053916C003DC4B1 /* LOKStackLayoutBuilder.h in Headers */, + 7EECD05B2053916C003DC4B1 /* LOKLabelLayoutBuilder.h in Headers */, + 7EC02CDC20570945000CEE24 /* LayoutKitObjC.h in Headers */, + 7EECD05C2053916C003DC4B1 /* LOKTextViewLayoutBuilder.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -1068,6 +1128,24 @@ productReference = 7EEA2AB6201D18F20077A088 /* LayoutKitObjCSampleApp.app */; productType = "com.apple.product-type.application"; }; + 7EECD00E2053916C003DC4B1 /* LayoutKitObjC */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7EECD05E2053916C003DC4B1 /* Build configuration list for PBXNativeTarget "LayoutKitObjC" */; + buildPhases = ( + 7EECD00F2053916C003DC4B1 /* Sources */, + 7EECD0522053916C003DC4B1 /* Frameworks */, + 7EECD0532053916C003DC4B1 /* Headers */, + 7EECD05D2053916C003DC4B1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LayoutKitObjC; + productName = LayoutKitObjC; + productReference = 7EECD0612053916C003DC4B1 /* LayoutKitObjC.framework */; + productType = "com.apple.product-type.framework"; + }; /* End PBXNativeTarget section */ /* Begin PBXProject section */ @@ -1140,6 +1218,7 @@ 0BCB759F1D8722370065E02A /* LayoutKit-macOSTests */, 0B2D09AF1D8735E1007E487C /* LayoutKitSampleApp */, 7EEA2AB5201D18F20077A088 /* LayoutKitObjCSampleApp */, + 7EECD00E2053916C003DC4B1 /* LayoutKitObjC */, ); }; /* End PBXProject section */ @@ -1212,6 +1291,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7EECD05D2053916C003DC4B1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ @@ -1254,11 +1340,8 @@ buildActionMask = 2147483647; files = ( 0BCB76051D8724800065E02A /* StackLayout.swift in Sources */, - 7E233E58202CEAB80012DD1E /* LOKLayoutArrangementSection.swift in Sources */, - 7E7370F72051ED84007C19FF /* LOKButtonLayoutBuilder.m in Sources */, 0BCB760D1D8724800065E02A /* LayoutAdapterTableView.swift in Sources */, 0BCB76071D8724800065E02A /* AxisPoint.swift in Sources */, - 7E7B83BA201E55690001E279 /* ReverseWrappedLayout.swift in Sources */, 0BCB75F71D8724800065E02A /* Animation.swift in Sources */, 0BCB76081D8724800065E02A /* AxisSize.swift in Sources */, 0B193BB81D887BCF00FCA22D /* CollectionExtension.swift in Sources */, @@ -1268,56 +1351,31 @@ 0BCB76001D8724800065E02A /* LayoutMeasurement.swift in Sources */, 0BCB76021D8724800065E02A /* InsetLayout.swift in Sources */, 0BCB76061D8724800065E02A /* AxisFlexibility.swift in Sources */, - 7E233E5A202CEB0D0012DD1E /* LOKBatchUpdates.swift in Sources */, 448CEC0F1E4E0CB500F8AD9E /* TextViewDefaultFont.swift in Sources */, - 7E7B83C4201E5EB20001E279 /* LOKAlignment.swift in Sources */, 0BCB760E1D8724800065E02A /* ReloadableView.swift in Sources */, - 7E7B83BE201E56080001E279 /* LOKLayoutArrangement.swift in Sources */, - 7E7B83B6201E550F0001E279 /* LOKLayout.swift in Sources */, 75D94A361EA01B6A00A5FD01 /* OverlayLayout.swift in Sources */, 0BCB75FD1D8724800065E02A /* CGSizeExtension.swift in Sources */, - 7E7370FB2051F415007C19FF /* LOKOverlayLayoutBuilder.m in Sources */, - 7E7B83E120279CD10001E279 /* LOKReloadableViewLayoutAdapter.swift in Sources */, 0BCB760B1D8724800065E02A /* BatchUpdates.swift in Sources */, - 7E7B83DF202101340001E279 /* LOKStackLayout.swift in Sources */, 0BCB76011D8724800065E02A /* BaseLayout.swift in Sources */, - 7E7B83C2201E57230001E279 /* LOKInsetLayout.swift in Sources */, 0BCB75FA1D8724800065E02A /* ConfigurableLayout.swift in Sources */, - 7E233E56202CEA8A0012DD1E /* LOKLayoutSection.swift in Sources */, - 7E7370EF2051E08F007C19FF /* LOKLabelLayoutBuilder.m in Sources */, 0BCB76111D8724800065E02A /* ReloadableViewLayoutAdapter.swift in Sources */, 0BCB75F91D8724800065E02A /* Axis.swift in Sources */, 0BCB760A1D8724800065E02A /* ViewRecycler.swift in Sources */, - 7E7B83B8201E554A0001E279 /* WrappedLayout.swift in Sources */, 0BCB76091D8724800065E02A /* UIKitSupport.swift in Sources */, - 7E7B83C8201E8DDF0001E279 /* LOKBaseLayout.swift in Sources */, 0BCB75FE1D8724800065E02A /* Layout.swift in Sources */, 0BCB75FF1D8724800065E02A /* LayoutArrangement.swift in Sources */, 0BCB760F1D8724800065E02A /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, 0BCB75F61D8724800065E02A /* Alignment.swift in Sources */, - 7E73710720520F5F007C19FF /* LOKTextViewLayoutBuilder.m in Sources */, - 7E7B83C6201E60BA0001E279 /* LOKLabelLayout.swift in Sources */, - 7E73710320520CA8007C19FF /* LOKStackLayoutBuilder.m in Sources */, - 7E233E65203129680012DD1E /* LOKOverlayLayout.swift in Sources */, 0B193BB91D887BCF00FCA22D /* IndexSetExtension.swift in Sources */, 0BCB75FC1D8724800065E02A /* CFAbsoluteTimeExtension.swift in Sources */, 0B765F2C1DC0514F000BF1FD /* CGFloatExtension.swift in Sources */, - 7E233E67203130110012DD1E /* LOKTextViewLayout.swift in Sources */, - 7E7370EB2051A494007C19FF /* LOKInsetLayoutBuilder.m in Sources */, 0BCB76041D8724800065E02A /* SizeLayout.swift in Sources */, - 7E233E61202E2CC00012DD1E /* LOKButtonLayout.swift in Sources */, - 7E7B83C0201E56590001E279 /* LOKLayoutMeasurement.swift in Sources */, 0BCB76031D8724800065E02A /* LabelLayout.swift in Sources */, 0BCB76101D8724800065E02A /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, - 7E7B83DD2020F7830001E279 /* LOKSizeLayout.swift in Sources */, - 7E7370FF2051F86D007C19FF /* LOKSizeLayoutBuilder.m in Sources */, - 7E7B83BC201E55B30001E279 /* LOKFlexibility.swift in Sources */, - 7E233E63202E5F870012DD1E /* LOKButtonLayoutType.swift in Sources */, 0BCB75FB1D8724800065E02A /* Flexibility.swift in Sources */, 0BCB76121D8724800065E02A /* ReloadableViewUpdateManager.swift in Sources */, 44F968151E425F5D00392763 /* TextViewLayout.swift in Sources */, 0BD42BDC1DB5EAAD00E04AA3 /* Text.swift in Sources */, - 7E7370F32051E3E6007C19FF /* LOKBaseLayoutBuilder.m in Sources */, 0BCB76131D8724800065E02A /* StackView.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; @@ -1508,6 +1566,79 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7EECD00F2053916C003DC4B1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7EECD0102053916C003DC4B1 /* StackLayout.swift in Sources */, + 7EECD0112053916C003DC4B1 /* LOKLayoutArrangementSection.swift in Sources */, + 7EECD0122053916C003DC4B1 /* LOKButtonLayoutBuilder.m in Sources */, + 7EECD0132053916C003DC4B1 /* LayoutAdapterTableView.swift in Sources */, + 7EECD0142053916C003DC4B1 /* AxisPoint.swift in Sources */, + 7EECD0152053916C003DC4B1 /* ReverseWrappedLayout.swift in Sources */, + 7EECD0162053916C003DC4B1 /* Animation.swift in Sources */, + 7EECD0172053916C003DC4B1 /* AxisSize.swift in Sources */, + 7EECD0182053916C003DC4B1 /* CollectionExtension.swift in Sources */, + 7EECD0192053916C003DC4B1 /* NSAttributedStringExtension.swift in Sources */, + 7EECD01A2053916C003DC4B1 /* LayoutAdapterCollectionView.swift in Sources */, + 7EECD01B2053916C003DC4B1 /* ButtonLayout.swift in Sources */, + 7EECD01C2053916C003DC4B1 /* LayoutMeasurement.swift in Sources */, + 7EECD01D2053916C003DC4B1 /* InsetLayout.swift in Sources */, + 7EECD01E2053916C003DC4B1 /* AxisFlexibility.swift in Sources */, + 7EECD01F2053916C003DC4B1 /* LOKBatchUpdates.swift in Sources */, + 7EECD0202053916C003DC4B1 /* TextViewDefaultFont.swift in Sources */, + 7EECD0212053916C003DC4B1 /* LOKAlignment.swift in Sources */, + 7EECD0222053916C003DC4B1 /* ReloadableView.swift in Sources */, + 7EECD0232053916C003DC4B1 /* LOKLayoutArrangement.swift in Sources */, + 7EECD0242053916C003DC4B1 /* LOKLayout.swift in Sources */, + 7EECD0252053916C003DC4B1 /* OverlayLayout.swift in Sources */, + 7EECD0262053916C003DC4B1 /* CGSizeExtension.swift in Sources */, + 7EECD0272053916C003DC4B1 /* LOKOverlayLayoutBuilder.m in Sources */, + 7EECD0282053916C003DC4B1 /* LOKReloadableViewLayoutAdapter.swift in Sources */, + 7EECD0292053916C003DC4B1 /* BatchUpdates.swift in Sources */, + 7EECD02A2053916C003DC4B1 /* LOKStackLayout.swift in Sources */, + 7EECD02B2053916C003DC4B1 /* BaseLayout.swift in Sources */, + 7EECD02C2053916C003DC4B1 /* LOKInsetLayout.swift in Sources */, + 7EECD02D2053916C003DC4B1 /* ConfigurableLayout.swift in Sources */, + 7EECD02E2053916C003DC4B1 /* LOKLayoutSection.swift in Sources */, + 7EECD02F2053916C003DC4B1 /* LOKLabelLayoutBuilder.m in Sources */, + 7EECD0302053916C003DC4B1 /* ReloadableViewLayoutAdapter.swift in Sources */, + 7EECD0312053916C003DC4B1 /* Axis.swift in Sources */, + 7EECD0322053916C003DC4B1 /* ViewRecycler.swift in Sources */, + 7EECD0332053916C003DC4B1 /* WrappedLayout.swift in Sources */, + 7EECD0342053916C003DC4B1 /* UIKitSupport.swift in Sources */, + 7EECD0352053916C003DC4B1 /* LOKBaseLayout.swift in Sources */, + 7EECD0362053916C003DC4B1 /* Layout.swift in Sources */, + 7EECD0372053916C003DC4B1 /* LayoutArrangement.swift in Sources */, + 7EECD0382053916C003DC4B1 /* ReloadableViewLayoutAdapter+UICollectionView.swift in Sources */, + 7EECD0392053916C003DC4B1 /* Alignment.swift in Sources */, + 7EECD03A2053916C003DC4B1 /* LOKTextViewLayoutBuilder.m in Sources */, + 7EECD03B2053916C003DC4B1 /* LOKLabelLayout.swift in Sources */, + 7EECD03C2053916C003DC4B1 /* LOKStackLayoutBuilder.m in Sources */, + 7EECD03D2053916C003DC4B1 /* LOKOverlayLayout.swift in Sources */, + 7EECD03E2053916C003DC4B1 /* IndexSetExtension.swift in Sources */, + 7EECD03F2053916C003DC4B1 /* CFAbsoluteTimeExtension.swift in Sources */, + 7EECD0402053916C003DC4B1 /* CGFloatExtension.swift in Sources */, + 7EECD0412053916C003DC4B1 /* LOKTextViewLayout.swift in Sources */, + 7EECD0422053916C003DC4B1 /* LOKInsetLayoutBuilder.m in Sources */, + 7EECD0432053916C003DC4B1 /* SizeLayout.swift in Sources */, + 7EECD0442053916C003DC4B1 /* LOKButtonLayout.swift in Sources */, + 7EECD0452053916C003DC4B1 /* LOKLayoutMeasurement.swift in Sources */, + 7EECD0462053916C003DC4B1 /* LabelLayout.swift in Sources */, + 7EECD0472053916C003DC4B1 /* ReloadableViewLayoutAdapter+UITableView.swift in Sources */, + 7EECD0482053916C003DC4B1 /* LOKSizeLayout.swift in Sources */, + 7EECD0492053916C003DC4B1 /* LOKSizeLayoutBuilder.m in Sources */, + 7EECD04A2053916C003DC4B1 /* LOKFlexibility.swift in Sources */, + 7EECD04B2053916C003DC4B1 /* LOKButtonLayoutType.swift in Sources */, + 7EECD04C2053916C003DC4B1 /* Flexibility.swift in Sources */, + 7EECD04D2053916C003DC4B1 /* ReloadableViewUpdateManager.swift in Sources */, + 7EECD04E2053916C003DC4B1 /* TextViewLayout.swift in Sources */, + 7EECD04F2053916C003DC4B1 /* Text.swift in Sources */, + 7EECD0502053916C003DC4B1 /* LOKBaseLayoutBuilder.m in Sources */, + 7EECD0512053916C003DC4B1 /* StackView.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ @@ -2574,6 +2705,129 @@ }; name = Release; }; + 7EECD05F2053916C003DC4B1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "LayoutKit-iOS copy-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKitObjC-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 7EECD0602053916C003DC4B1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVES = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + CODE_SIGN_IDENTITY = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + INFOPLIST_FILE = "LayoutKit-iOS copy-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_BUNDLE_IDENTIFIER = "com.linkedin.LayoutKitObjC-iOS"; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ @@ -2667,6 +2921,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 7EECD05E2053916C003DC4B1 /* Build configuration list for PBXNativeTarget "LayoutKitObjC" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 7EECD05F2053916C003DC4B1 /* Debug */, + 7EECD0602053916C003DC4B1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = 0BCB75541D871FC40065E02A /* Project object */; diff --git a/LayoutKit.xcodeproj/xcshareddata/xcschemes/LayoutKitObjC-iOS.xcscheme b/LayoutKit.xcodeproj/xcshareddata/xcschemes/LayoutKitObjC-iOS.xcscheme new file mode 100644 index 00000000..0c90dd27 --- /dev/null +++ b/LayoutKit.xcodeproj/xcshareddata/xcschemes/LayoutKitObjC-iOS.xcscheme @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/LayoutKitObjC.podspec b/LayoutKitObjC.podspec index c8d44e7e..3895cede 100644 --- a/LayoutKitObjC.podspec +++ b/LayoutKitObjC.podspec @@ -6,7 +6,7 @@ Pod::Spec.new do |spec| spec.authors = 'LinkedIn' spec.summary = 'LayoutKit is a fast view layout library for iOS, macOS, and tvOS. Now with Objective-C support.' spec.source = { :git => 'https://github.com/linkedin/LayoutKit.git', :tag => spec.version } - spec.source_files = 'Sources/**/*.swift' + spec.source_files = 'Sources/**/*.{swift,h,m}' spec.documentation_url = 'http://layoutkit.org' spec.ios.deployment_target = '8.0' @@ -22,6 +22,9 @@ Pod::Spec.new do |spec| 'Sources/Layouts/ButtonLayout.swift', 'Sources/Layouts/LabelLayout.swift', 'Sources/Layouts/TextViewLayout.swift', + 'Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.*', + 'Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.*', + 'Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.*', 'Sources/ObjCSupport/LOKBatchUpdates.swift', 'Sources/ObjCSupport/LOKButtonLayout.swift', 'Sources/ObjCSupport/LOKButtonLayoutType.swift', @@ -41,6 +44,7 @@ Pod::Spec.new do |spec| 'Sources/AppKitSupport.swift', # Excluded due to "'systemFontSize' is unavailable" + 'Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.*', 'Sources/ObjCSupport/LOKLabelLayout.swift' ] diff --git a/LayoutKitObjCSampleApp/RotationLayout.h b/LayoutKitObjCSampleApp/RotationLayout.h index 96b4f81e..91478cb1 100644 --- a/LayoutKitObjCSampleApp/RotationLayout.h +++ b/LayoutKitObjCSampleApp/RotationLayout.h @@ -7,7 +7,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #import -#import +#import @interface RotationLayout: NSObject diff --git a/Sources/LayoutKit.h b/Sources/LayoutKit.h index 360ddd1f..070c889f 100644 --- a/Sources/LayoutKit.h +++ b/Sources/LayoutKit.h @@ -1,10 +1,10 @@ +// Copyright 2018 LinkedIn Corp. +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 // -// LayoutKit.h -// LayoutKit -// -// Created by Nick Snyder on 9/12/16. -// -// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #import diff --git a/Sources/LayoutKitObjC.h b/Sources/LayoutKitObjC.h new file mode 100644 index 00000000..5236927c --- /dev/null +++ b/Sources/LayoutKitObjC.h @@ -0,0 +1,31 @@ +// Copyright 2018 LinkedIn Corp. +// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. +// You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, +// software distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + +#import + +//! Project version number for LayoutKitObjC. +FOUNDATION_EXPORT double LayoutKitObjCVersionNumber; + +//! Project version string for LayoutKitObjC. +FOUNDATION_EXPORT const unsigned char LayoutKitObjCVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import +#import "LOKBaseLayoutBuilder.h" +#if __has_include("LOKButtonLayoutBuilder.h") +#import "LOKButtonLayoutBuilder.h" +#endif +#import "LOKInsetLayoutBuilder.h" +#if __has_include("LOKLabelLayoutBuilder.h") +#import "LOKLabelLayoutBuilder.h" +#endif +#import "LOKOverlayLayoutBuilder.h" +#import "LOKSizeLayoutBuilder.h" +#import "LOKStackLayoutBuilder.h" +#if __has_include("LOKTextViewLayoutBuilder.h") +#import "LOKTextViewLayoutBuilder.h" +#endif diff --git a/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.h index 37543918..2c6f38b4 100644 --- a/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.h @@ -7,7 +7,22 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #import -#import + +#if __has_include() +// Importing the UI framework header. We could have just forward-declared `@class UIView` but `UIEdgeInsets` is a struct and cannot be forward-declared. +#import +typedef UIEdgeInsets EdgeInsets; +typedef UIView View; +#else +#import +typedef NSEdgeInsets EdgeInsets; +typedef NSView View; +#endif + +// Forward-declaring +@class LOKAlignment; +@class LOKFlexibility; +@protocol LOKLayout; @interface LOKBaseLayoutBuilder : NSObject @@ -15,7 +30,7 @@ @property (nonatomic, nullable) LOKFlexibility *flexibility; @property (nonatomic, nullable) NSString *viewReuseId; @property (nonatomic, nullable) Class viewClass; -@property (nonatomic, nullable) void (^ configure)(UIView * _Nonnull); +@property (nonatomic, nullable) void (^ configure)(View * _Nonnull); - (nonnull id)build; diff --git a/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.m index cfd2fb84..2e451921 100644 --- a/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKBaseLayoutBuilder.m @@ -10,4 +10,8 @@ @implementation LOKBaseLayoutBuilder +- (id)build { + return nil; +} + @end diff --git a/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.h index 9643174d..98230c86 100644 --- a/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.h @@ -8,6 +8,17 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKButtonLayout; + +typedef NS_ENUM(NSInteger, LOKButtonLayoutType) { + LOKButtonLayoutTypeCustom, + LOKButtonLayoutTypeSystem, + LOKButtonLayoutTypeDetailDisclosure, + LOKButtonLayoutTypeInfoLight, + LOKButtonLayoutTypeInfoDark, + LOKButtonLayoutTypeContactAdd +}; + @interface LOKButtonLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withTitle:(nullable NSString *)title; diff --git a/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.m index 7f84f01e..0fb67ec9 100644 --- a/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKButtonLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKButtonLayoutBuilder.h" +#import + @implementation LOKButtonLayoutBuilder + (instancetype)withTitle:(NSString *)title { diff --git a/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.h index 0928bac5..3fa2986c 100644 --- a/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.h @@ -8,11 +8,13 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKInsetLayout; + @interface LOKInsetLayoutBuilder : LOKBaseLayoutBuilder -+ (nonnull instancetype)withInsets:(UIEdgeInsets)insets around:(nonnull id)sublayout; ++ (nonnull instancetype)withInsets:(EdgeInsets)insets around:(nonnull id)sublayout; -@property (nonatomic) UIEdgeInsets insets; +@property (nonatomic) EdgeInsets insets; @property (nonatomic, nonnull) id sublayout; - (nonnull LOKInsetLayout *)build; diff --git a/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.m index 44e36cbe..23da835c 100644 --- a/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKInsetLayoutBuilder.m @@ -8,9 +8,11 @@ #import "LOKInsetLayoutBuilder.h" +#import + @implementation LOKInsetLayoutBuilder -+ (nonnull instancetype)withInsets:(UIEdgeInsets)insets around:(nonnull id)sublayout { ++ (nonnull instancetype)withInsets:(EdgeInsets)insets around:(nonnull id)sublayout { LOKInsetLayoutBuilder *builder = [[self alloc] init]; if (builder) { builder.insets = insets; diff --git a/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.h index 6622f4f8..eecbaf06 100644 --- a/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.h @@ -8,6 +8,8 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKLabelLayout; + @interface LOKLabelLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withString:(nullable NSString *)string; diff --git a/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.m index f65df3d4..337de1da 100644 --- a/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKLabelLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKLabelLayoutBuilder.h" +#import + @implementation LOKLabelLayoutBuilder + (nonnull instancetype)withString:(nullable NSString *)string { diff --git a/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.h index 709fd419..3849452f 100644 --- a/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.h @@ -8,6 +8,8 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKOverlayLayout; + @interface LOKOverlayLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withPrimaryLayout:(nonnull id)primaryLayout; diff --git a/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.m index f2079a59..f8184d9a 100644 --- a/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKOverlayLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKOverlayLayoutBuilder.h" +#import + @implementation LOKOverlayLayoutBuilder + (instancetype)withPrimaryLayout:(id)primaryLayout { diff --git a/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.h index 8a332fbc..def0c43c 100644 --- a/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.h @@ -8,6 +8,8 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKSizeLayout; + @interface LOKSizeLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withSublayout:(nullable id)sublayout; diff --git a/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.m index 8b9a75f5..aacfb615 100644 --- a/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKSizeLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKSizeLayoutBuilder.h" +#import + @implementation LOKSizeLayoutBuilder + (instancetype)withSublayout:(id)sublayout { diff --git a/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.h index 300dbd5f..b46138d4 100644 --- a/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.h @@ -8,6 +8,23 @@ #import "LOKBaseLayoutBuilder.h" +typedef NS_ENUM(NSInteger, LOKStackLayoutDistribution) { + LOKStackLayoutDistributionDefault, + LOKStackLayoutDistributionLeading, + LOKStackLayoutDistributionTrailing, + LOKStackLayoutDistributionCenter, + LOKStackLayoutDistributionFillEqualSpacing, + LOKStackLayoutDistributionFillEqualSize, + LOKStackLayoutDistributionFillFlexing +}; + +typedef NS_ENUM(NSInteger, LOKAxis) { + LOKAxisVertical, + LOKAxisHorizontal +}; + +@class LOKStackLayout; + @interface LOKStackLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withSublayouts:(nonnull NSArray< id > *)sublayouts; diff --git a/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.m index 4c4516d4..ccb5835c 100644 --- a/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKStackLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKStackLayoutBuilder.h" +#import + @implementation LOKStackLayoutBuilder + (instancetype)withSublayouts:(NSArray> *)sublayouts { diff --git a/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.h b/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.h index 3c4dac1a..03f70032 100644 --- a/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.h +++ b/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.h @@ -8,6 +8,8 @@ #import "LOKBaseLayoutBuilder.h" +@class LOKTextViewLayout; + @interface LOKTextViewLayoutBuilder : LOKBaseLayoutBuilder + (nonnull instancetype)withString:(nullable NSString *)string; diff --git a/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.m b/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.m index 6b491aa8..6fff77cf 100644 --- a/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.m +++ b/Sources/ObjCSupport/Builders/LOKTextViewLayoutBuilder.m @@ -8,6 +8,8 @@ #import "LOKTextViewLayoutBuilder.h" +#import + @implementation LOKTextViewLayoutBuilder + (nonnull instancetype)withString:(nullable NSString *)string { diff --git a/Sources/ObjCSupport/LOKButtonLayoutType.swift b/Sources/ObjCSupport/LOKButtonLayoutType.swift index 6deb7e2a..73be821c 100644 --- a/Sources/ObjCSupport/LOKButtonLayoutType.swift +++ b/Sources/ObjCSupport/LOKButtonLayoutType.swift @@ -8,14 +8,7 @@ import Foundation -@objc public enum LOKButtonLayoutType: Int { - case custom - case system - case detailDisclosure - case infoLight - case infoDark - case contactAdd - +extension LOKButtonLayoutType { var unwrapped: ButtonLayoutType { switch self { case .custom: diff --git a/Sources/ObjCSupport/LOKStackLayout.swift b/Sources/ObjCSupport/LOKStackLayout.swift index d9d634b7..00c737d2 100644 --- a/Sources/ObjCSupport/LOKStackLayout.swift +++ b/Sources/ObjCSupport/LOKStackLayout.swift @@ -8,9 +8,7 @@ import CoreGraphics -@objc public enum LOKAxis: Int { - case vertical = 0 - case horizontal +extension LOKAxis { var axis: Axis { switch self { case .vertical: @@ -21,14 +19,7 @@ import CoreGraphics } } -@objc public enum LOKStackLayoutDistribution: Int { - case `default` - case leading - case trailing - case center - case fillEqualSpacing - case fillEqualSize - case fillFlexing +extension LOKStackLayoutDistribution { var distribution: StackLayoutDistribution? { switch self { case .`default`: