merge from develop
This commit is contained in:
commit
8422362e77
@ -61,9 +61,8 @@
|
|||||||
94C2D9A723872DA90006CF46 /* LabelAttributeColorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */; };
|
94C2D9A723872DA90006CF46 /* LabelAttributeColorModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */; };
|
||||||
94C2D9A923872E5E0006CF46 /* LabelAttributeImageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */; };
|
94C2D9A923872E5E0006CF46 /* LabelAttributeImageModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */; };
|
||||||
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */; };
|
94C2D9AB23872EB50006CF46 /* LabelAttributeActionModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */; };
|
||||||
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */ = {isa = PBXBuildFile; fileRef = D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
|
||||||
D206997821FB8A0B00CAE0DE /* MVMCoreUINavigationController.m in Sources */ = {isa = PBXBuildFile; fileRef = D206997621FB8A0B00CAE0DE /* MVMCoreUINavigationController.m */; };
|
|
||||||
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D20A9A5D2243D3E300ADE781 /* TwoButtonView.swift */; };
|
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D20A9A5D2243D3E300ADE781 /* TwoButtonView.swift */; };
|
||||||
|
D213347723843825008E41B3 /* Line.swift in Sources */ = {isa = PBXBuildFile; fileRef = D213347623843825008E41B3 /* Line.swift */; };
|
||||||
D224798A2314445E003FCCF9 /* LabelSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22479892314445E003FCCF9 /* LabelSwitch.swift */; };
|
D224798A2314445E003FCCF9 /* LabelSwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22479892314445E003FCCF9 /* LabelSwitch.swift */; };
|
||||||
D224798C231450C8003FCCF9 /* HeadlineBodySwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = D224798B231450C8003FCCF9 /* HeadlineBodySwitch.swift */; };
|
D224798C231450C8003FCCF9 /* HeadlineBodySwitch.swift in Sources */ = {isa = PBXBuildFile; fileRef = D224798B231450C8003FCCF9 /* HeadlineBodySwitch.swift */; };
|
||||||
D22479942316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22479932316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift */; };
|
D22479942316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D22479932316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift */; };
|
||||||
@ -87,8 +86,6 @@
|
|||||||
D282AAB4223FDDAE00C46919 /* MFLoadImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */; };
|
D282AAB4223FDDAE00C46919 /* MFLoadImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */; };
|
||||||
D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */; };
|
D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */; };
|
||||||
D282AACB2243C61700C46919 /* ButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AACA2243C61700C46919 /* ButtonView.swift */; };
|
D282AACB2243C61700C46919 /* ButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D282AACA2243C61700C46919 /* ButtonView.swift */; };
|
||||||
D28B4F8A21FF967C00712C7A /* MVMCoreUIObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D28B4F8821FF967C00712C7A /* MVMCoreUIObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
|
||||||
D28B4F8B21FF967C00712C7A /* MVMCoreUIObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D28B4F8921FF967C00712C7A /* MVMCoreUIObject.m */; };
|
|
||||||
D296E13C229598BF0051EBE7 /* MoleculeListCellProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E13B2295969C0051EBE7 /* MoleculeListCellProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D296E13C229598BF0051EBE7 /* MoleculeListCellProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E13B2295969C0051EBE7 /* MoleculeListCellProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D296E1412295EBBA0051EBE7 /* MoleculeDelegateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E1402295EBBA0051EBE7 /* MoleculeDelegateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D296E1412295EBBA0051EBE7 /* MoleculeDelegateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E1402295EBBA0051EBE7 /* MoleculeDelegateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D296E14722A5984C0051EBE7 /* MVMCoreUIViewConstrainingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E14622A597490051EBE7 /* MVMCoreUIViewConstrainingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D296E14722A5984C0051EBE7 /* MVMCoreUIViewConstrainingProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D296E14622A597490051EBE7 /* MVMCoreUIViewConstrainingProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
@ -217,6 +214,8 @@
|
|||||||
D2A6390522CBCE160052ED1F /* MoleculeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A6390422CBCE160052ED1F /* MoleculeCollectionViewCell.swift */; };
|
D2A6390522CBCE160052ED1F /* MoleculeCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A6390422CBCE160052ED1F /* MoleculeCollectionViewCell.swift */; };
|
||||||
D2B18B7F2360913400A9AEDC /* Control.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B7E2360913400A9AEDC /* Control.swift */; };
|
D2B18B7F2360913400A9AEDC /* Control.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B7E2360913400A9AEDC /* Control.swift */; };
|
||||||
D2B18B812360945C00A9AEDC /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B802360945C00A9AEDC /* View.swift */; };
|
D2B18B812360945C00A9AEDC /* View.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B802360945C00A9AEDC /* View.swift */; };
|
||||||
|
D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B912361E65A00A9AEDC /* CoreUIObject.swift */; };
|
||||||
|
D2B18B94236214AD00A9AEDC /* NavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B18B93236214AD00A9AEDC /* NavigationController.swift */; };
|
||||||
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */; };
|
D2B1E3E522F37D6A0065F95C /* ImageHeadlineBody.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */; };
|
||||||
D2C5001821F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C5001621F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
D2C5001821F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C5001621F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||||
D2C5001921F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */; };
|
D2C5001921F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */; };
|
||||||
@ -287,9 +286,8 @@
|
|||||||
94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeColorModel.swift; sourceTree = "<group>"; };
|
94C2D9A623872DA90006CF46 /* LabelAttributeColorModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeColorModel.swift; sourceTree = "<group>"; };
|
||||||
94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeImageModel.swift; sourceTree = "<group>"; };
|
94C2D9A823872E5E0006CF46 /* LabelAttributeImageModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeImageModel.swift; sourceTree = "<group>"; };
|
||||||
94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeActionModel.swift; sourceTree = "<group>"; };
|
94C2D9AA23872EB50006CF46 /* LabelAttributeActionModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelAttributeActionModel.swift; sourceTree = "<group>"; };
|
||||||
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUINavigationController.h; sourceTree = "<group>"; };
|
|
||||||
D206997621FB8A0B00CAE0DE /* MVMCoreUINavigationController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUINavigationController.m; sourceTree = "<group>"; };
|
|
||||||
D20A9A5D2243D3E300ADE781 /* TwoButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwoButtonView.swift; sourceTree = "<group>"; };
|
D20A9A5D2243D3E300ADE781 /* TwoButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TwoButtonView.swift; sourceTree = "<group>"; };
|
||||||
|
D213347623843825008E41B3 /* Line.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Line.swift; sourceTree = "<group>"; };
|
||||||
D22479892314445E003FCCF9 /* LabelSwitch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelSwitch.swift; sourceTree = "<group>"; };
|
D22479892314445E003FCCF9 /* LabelSwitch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LabelSwitch.swift; sourceTree = "<group>"; };
|
||||||
D224798B231450C8003FCCF9 /* HeadlineBodySwitch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlineBodySwitch.swift; sourceTree = "<group>"; };
|
D224798B231450C8003FCCF9 /* HeadlineBodySwitch.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HeadlineBodySwitch.swift; sourceTree = "<group>"; };
|
||||||
D22479932316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSLayoutConstraintExtension.swift; sourceTree = "<group>"; };
|
D22479932316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSLayoutConstraintExtension.swift; sourceTree = "<group>"; };
|
||||||
@ -313,8 +311,6 @@
|
|||||||
D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFLoadImageView.swift; sourceTree = "<group>"; };
|
D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFLoadImageView.swift; sourceTree = "<group>"; };
|
||||||
D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFTransparentGIFView.swift; sourceTree = "<group>"; };
|
D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MFTransparentGIFView.swift; sourceTree = "<group>"; };
|
||||||
D282AACA2243C61700C46919 /* ButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonView.swift; sourceTree = "<group>"; };
|
D282AACA2243C61700C46919 /* ButtonView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ButtonView.swift; sourceTree = "<group>"; };
|
||||||
D28B4F8821FF967C00712C7A /* MVMCoreUIObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIObject.h; sourceTree = "<group>"; };
|
|
||||||
D28B4F8921FF967C00712C7A /* MVMCoreUIObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIObject.m; sourceTree = "<group>"; };
|
|
||||||
D296E13B2295969C0051EBE7 /* MoleculeListCellProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MoleculeListCellProtocol.h; sourceTree = "<group>"; };
|
D296E13B2295969C0051EBE7 /* MoleculeListCellProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MoleculeListCellProtocol.h; sourceTree = "<group>"; };
|
||||||
D296E1402295EBBA0051EBE7 /* MoleculeDelegateProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MoleculeDelegateProtocol.h; sourceTree = "<group>"; };
|
D296E1402295EBBA0051EBE7 /* MoleculeDelegateProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MoleculeDelegateProtocol.h; sourceTree = "<group>"; };
|
||||||
D296E14622A597490051EBE7 /* MVMCoreUIViewConstrainingProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIViewConstrainingProtocol.h; sourceTree = "<group>"; };
|
D296E14622A597490051EBE7 /* MVMCoreUIViewConstrainingProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIViewConstrainingProtocol.h; sourceTree = "<group>"; };
|
||||||
@ -447,6 +443,8 @@
|
|||||||
D2A6390422CBCE160052ED1F /* MoleculeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeCollectionViewCell.swift; sourceTree = "<group>"; };
|
D2A6390422CBCE160052ED1F /* MoleculeCollectionViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeCollectionViewCell.swift; sourceTree = "<group>"; };
|
||||||
D2B18B7E2360913400A9AEDC /* Control.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Control.swift; sourceTree = "<group>"; };
|
D2B18B7E2360913400A9AEDC /* Control.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Control.swift; sourceTree = "<group>"; };
|
||||||
D2B18B802360945C00A9AEDC /* View.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = View.swift; sourceTree = "<group>"; };
|
D2B18B802360945C00A9AEDC /* View.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = View.swift; sourceTree = "<group>"; };
|
||||||
|
D2B18B912361E65A00A9AEDC /* CoreUIObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CoreUIObject.swift; sourceTree = "<group>"; };
|
||||||
|
D2B18B93236214AD00A9AEDC /* NavigationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavigationController.swift; sourceTree = "<group>"; };
|
||||||
D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageHeadlineBody.swift; sourceTree = "<group>"; };
|
D2B1E3E422F37D6A0065F95C /* ImageHeadlineBody.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageHeadlineBody.swift; sourceTree = "<group>"; };
|
||||||
D2C5001621F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIViewControllerMappingObject.h; sourceTree = "<group>"; };
|
D2C5001621F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIViewControllerMappingObject.h; sourceTree = "<group>"; };
|
||||||
D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIViewControllerMappingObject.m; sourceTree = "<group>"; };
|
D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIViewControllerMappingObject.m; sourceTree = "<group>"; };
|
||||||
@ -455,6 +453,7 @@
|
|||||||
D2E1FADA2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIDelegateObject.swift; sourceTree = "<group>"; };
|
D2E1FADA2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MVMCoreUIDelegateObject.swift; sourceTree = "<group>"; };
|
||||||
D2E1FADE2268B8E700AEFD8C /* ThreeLayerTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeLayerTableViewController.swift; sourceTree = "<group>"; };
|
D2E1FADE2268B8E700AEFD8C /* ThreeLayerTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThreeLayerTableViewController.swift; sourceTree = "<group>"; };
|
||||||
D2E1FAE02268E81D00AEFD8C /* MoleculeListTemplate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeListTemplate.swift; sourceTree = "<group>"; };
|
D2E1FAE02268E81D00AEFD8C /* MoleculeListTemplate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoleculeListTemplate.swift; sourceTree = "<group>"; };
|
||||||
|
D2F4DDE52371A4CB00CD28BB /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
|
||||||
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeftRightLabelView.swift; sourceTree = "<group>"; };
|
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LeftRightLabelView.swift; sourceTree = "<group>"; };
|
||||||
DB891E822253FA8500022516 /* Label.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Label.swift; sourceTree = "<group>"; };
|
DB891E822253FA8500022516 /* Label.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Label.swift; sourceTree = "<group>"; };
|
||||||
DBC4391622442196001AB423 /* CaretView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretView.swift; sourceTree = "<group>"; };
|
DBC4391622442196001AB423 /* CaretView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretView.swift; sourceTree = "<group>"; };
|
||||||
@ -536,6 +535,39 @@
|
|||||||
path = LabelModel;
|
path = LabelModel;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
94FB5B83238D892800EB2193 /* Recovered References */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
);
|
||||||
|
name = "Recovered References";
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
D213347423842FE3008E41B3 /* Controllers */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D29DF29321E7ADB8003B2FB9 /* StackableViewController.h */,
|
||||||
|
D29DF28E21E7ADB8003B2FB9 /* StackableViewController.m */,
|
||||||
|
D29770F021F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.h */,
|
||||||
|
D29770F121F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.m */,
|
||||||
|
D29770EF21F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.h */,
|
||||||
|
D29770EE21F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.m */,
|
||||||
|
);
|
||||||
|
path = Controllers;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
|
D213347523842FF5008E41B3 /* Views */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
D29DF17E21E69E2E003B2FB9 /* MFView.h */,
|
||||||
|
D29DF17F21E69E2E003B2FB9 /* MFView.m */,
|
||||||
|
D29DF31E21ED0CBA003B2FB9 /* LabelView.h */,
|
||||||
|
D29DF31F21ED0CBA003B2FB9 /* LabelView.m */,
|
||||||
|
D29DF15921E697DA003B2FB9 /* SeparatorView.h */,
|
||||||
|
D29DF15A21E697DA003B2FB9 /* SeparatorView.m */,
|
||||||
|
);
|
||||||
|
path = Views;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
D224798823142BF2003FCCF9 /* SwitchMolecules */ = {
|
D224798823142BF2003FCCF9 /* SwitchMolecules */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@ -595,17 +627,13 @@
|
|||||||
path = Items;
|
path = Items;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
D22D1F582204D2590077CEC0 /* LegacyControllers */ = {
|
D22D1F582204D2590077CEC0 /* Legacy */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
D29DF29321E7ADB8003B2FB9 /* StackableViewController.h */,
|
D213347523842FF5008E41B3 /* Views */,
|
||||||
D29DF28E21E7ADB8003B2FB9 /* StackableViewController.m */,
|
D213347423842FE3008E41B3 /* Controllers */,
|
||||||
D29770F021F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.h */,
|
|
||||||
D29770F121F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsViewController.m */,
|
|
||||||
D29770EF21F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.h */,
|
|
||||||
D29770EE21F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.m */,
|
|
||||||
);
|
);
|
||||||
path = LegacyControllers;
|
path = Legacy;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
D29DF0C221E404D4003B2FB9 = {
|
D29DF0C221E404D4003B2FB9 = {
|
||||||
@ -614,6 +642,7 @@
|
|||||||
D29DF0CE21E404D4003B2FB9 /* MVMCoreUI */,
|
D29DF0CE21E404D4003B2FB9 /* MVMCoreUI */,
|
||||||
D29DF0CD21E404D4003B2FB9 /* Products */,
|
D29DF0CD21E404D4003B2FB9 /* Products */,
|
||||||
D29DF0E421E4F3C7003B2FB9 /* Frameworks */,
|
D29DF0E421E4F3C7003B2FB9 /* Frameworks */,
|
||||||
|
94FB5B83238D892800EB2193 /* Recovered References */,
|
||||||
);
|
);
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
@ -638,7 +667,7 @@
|
|||||||
D29DF13321E68604003B2FB9 /* Styles */,
|
D29DF13321E68604003B2FB9 /* Styles */,
|
||||||
D29DF11021E6805F003B2FB9 /* Categories */,
|
D29DF11021E6805F003B2FB9 /* Categories */,
|
||||||
D29DF11921E68467003B2FB9 /* Containers */,
|
D29DF11921E68467003B2FB9 /* Containers */,
|
||||||
D22D1F582204D2590077CEC0 /* LegacyControllers */,
|
D22D1F582204D2590077CEC0 /* Legacy */,
|
||||||
D29DF10F21E67A7D003B2FB9 /* BaseControllers */,
|
D29DF10F21E67A7D003B2FB9 /* BaseControllers */,
|
||||||
D29DF11E21E6851E003B2FB9 /* TopAlert */,
|
D29DF11E21E6851E003B2FB9 /* TopAlert */,
|
||||||
D29DF10E21E67A77003B2FB9 /* Molecules */,
|
D29DF10E21E67A77003B2FB9 /* Molecules */,
|
||||||
@ -725,6 +754,7 @@
|
|||||||
D29DF2CD21E7C104003B2FB9 /* MFLoadingViewController.m */,
|
D29DF2CD21E7C104003B2FB9 /* MFLoadingViewController.m */,
|
||||||
D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */,
|
D2A5146A2214905000345BFB /* ThreeLayerViewController.swift */,
|
||||||
D2E1FADE2268B8E700AEFD8C /* ThreeLayerTableViewController.swift */,
|
D2E1FADE2268B8E700AEFD8C /* ThreeLayerTableViewController.swift */,
|
||||||
|
D2F4DDE52371A4CB00CD28BB /* ViewController.swift */,
|
||||||
);
|
);
|
||||||
path = BaseControllers;
|
path = BaseControllers;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -746,8 +776,7 @@
|
|||||||
children = (
|
children = (
|
||||||
D29DF2B721E7BE79003B2FB9 /* TabBarController */,
|
D29DF2B721E7BE79003B2FB9 /* TabBarController */,
|
||||||
D29DF2B621E7BE66003B2FB9 /* SplitViewController */,
|
D29DF2B621E7BE66003B2FB9 /* SplitViewController */,
|
||||||
D206997521FB8A0B00CAE0DE /* MVMCoreUINavigationController.h */,
|
D2B18B93236214AD00A9AEDC /* NavigationController.swift */,
|
||||||
D206997621FB8A0B00CAE0DE /* MVMCoreUINavigationController.m */,
|
|
||||||
);
|
);
|
||||||
path = Containers;
|
path = Containers;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -838,20 +867,15 @@
|
|||||||
DBC4391722442197001AB423 /* DashLine.swift */,
|
DBC4391722442197001AB423 /* DashLine.swift */,
|
||||||
944589202385D6E900DE9FD4 /* DashLineModel.swift */,
|
944589202385D6E900DE9FD4 /* DashLineModel.swift */,
|
||||||
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */,
|
DB06250A2293456500B72DD3 /* LeftRightLabelView.swift */,
|
||||||
D29DF17E21E69E2E003B2FB9 /* MFView.h */,
|
|
||||||
D29DF17F21E69E2E003B2FB9 /* MFView.m */,
|
|
||||||
D29DF31E21ED0CBA003B2FB9 /* LabelView.h */,
|
|
||||||
D29DF31F21ED0CBA003B2FB9 /* LabelView.m */,
|
|
||||||
D29DF28721E7AC2B003B2FB9 /* ViewConstrainingView.h */,
|
D29DF28721E7AC2B003B2FB9 /* ViewConstrainingView.h */,
|
||||||
D29DF28821E7AC2B003B2FB9 /* ViewConstrainingView.m */,
|
D29DF28821E7AC2B003B2FB9 /* ViewConstrainingView.m */,
|
||||||
D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */,
|
D282AAB9224131D100C46919 /* MFTransparentGIFView.swift */,
|
||||||
D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */,
|
D282AAB3223FDDAE00C46919 /* MFLoadImageView.swift */,
|
||||||
944589222385DA9500DE9FD4 /* ImageViewModel.swift */,
|
944589222385DA9500DE9FD4 /* ImageViewModel.swift */,
|
||||||
|
D213347623843825008E41B3 /* Line.swift */,
|
||||||
D29DF2AD21E7B3A4003B2FB9 /* MFTextView.h */,
|
D29DF2AD21E7B3A4003B2FB9 /* MFTextView.h */,
|
||||||
D29DF2AB21E7B3A4003B2FB9 /* MFTextView.m */,
|
D29DF2AB21E7B3A4003B2FB9 /* MFTextView.m */,
|
||||||
D29DF2AC21E7B3A4003B2FB9 /* MFTextView.xib */,
|
D29DF2AC21E7B3A4003B2FB9 /* MFTextView.xib */,
|
||||||
D29DF15921E697DA003B2FB9 /* SeparatorView.h */,
|
|
||||||
D29DF15A21E697DA003B2FB9 /* SeparatorView.m */,
|
|
||||||
D29DF2B121E7B76C003B2FB9 /* MFLoadingSpinner.h */,
|
D29DF2B121E7B76C003B2FB9 /* MFLoadingSpinner.h */,
|
||||||
D29DF2B221E7B76D003B2FB9 /* MFLoadingSpinner.m */,
|
D29DF2B221E7B76D003B2FB9 /* MFLoadingSpinner.m */,
|
||||||
D29DF32321ED0DA2003B2FB9 /* TextButtonView.h */,
|
D29DF32321ED0DA2003B2FB9 /* TextButtonView.h */,
|
||||||
@ -919,8 +943,7 @@
|
|||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
D2E1FADA2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift */,
|
D2E1FADA2260D3D200AEFD8C /* MVMCoreUIDelegateObject.swift */,
|
||||||
D28B4F8821FF967C00712C7A /* MVMCoreUIObject.h */,
|
D2B18B912361E65A00A9AEDC /* CoreUIObject.swift */,
|
||||||
D28B4F8921FF967C00712C7A /* MVMCoreUIObject.m */,
|
|
||||||
D29DF27721E7A533003B2FB9 /* MVMCoreUISession.h */,
|
D29DF27721E7A533003B2FB9 /* MVMCoreUISession.h */,
|
||||||
D29DF27821E7A533003B2FB9 /* MVMCoreUISession.m */,
|
D29DF27821E7A533003B2FB9 /* MVMCoreUISession.m */,
|
||||||
D29DF27321E79E81003B2FB9 /* MVMCoreUILoggingHandler.h */,
|
D29DF27321E79E81003B2FB9 /* MVMCoreUILoggingHandler.h */,
|
||||||
@ -1013,7 +1036,6 @@
|
|||||||
D260D7B622D68514007E7233 /* MVMCoreUIPagingProtocol.h in Headers */,
|
D260D7B622D68514007E7233 /* MVMCoreUIPagingProtocol.h in Headers */,
|
||||||
D29DF18021E69E49003B2FB9 /* MFView.h in Headers */,
|
D29DF18021E69E49003B2FB9 /* MFView.h in Headers */,
|
||||||
D29DF27921E7A533003B2FB9 /* MVMCoreUISession.h in Headers */,
|
D29DF27921E7A533003B2FB9 /* MVMCoreUISession.h in Headers */,
|
||||||
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */,
|
|
||||||
D29DF29D21E7AE38003B2FB9 /* MFStyler.h in Headers */,
|
D29DF29D21E7AE38003B2FB9 /* MFStyler.h in Headers */,
|
||||||
D29DF2B021E7B3A4003B2FB9 /* MFTextView.h in Headers */,
|
D29DF2B021E7B3A4003B2FB9 /* MFTextView.h in Headers */,
|
||||||
D29DF2A921E7B2F9003B2FB9 /* MVMCoreUIConstants.h in Headers */,
|
D29DF2A921E7B2F9003B2FB9 /* MVMCoreUIConstants.h in Headers */,
|
||||||
@ -1056,7 +1078,6 @@
|
|||||||
D29DF13121E6851E003B2FB9 /* MVMCoreUITopAlertExpandableView.h in Headers */,
|
D29DF13121E6851E003B2FB9 /* MVMCoreUITopAlertExpandableView.h in Headers */,
|
||||||
D29DF2C421E7BF57003B2FB9 /* MFTabBarSwipeAnimator.h in Headers */,
|
D29DF2C421E7BF57003B2FB9 /* MFTabBarSwipeAnimator.h in Headers */,
|
||||||
D2A5145D2211D22A00345BFB /* MVMCoreUIMoleculeViewProtocol.h in Headers */,
|
D2A5145D2211D22A00345BFB /* MVMCoreUIMoleculeViewProtocol.h in Headers */,
|
||||||
D28B4F8A21FF967C00712C7A /* MVMCoreUIObject.h in Headers */,
|
|
||||||
D29DF2CA21E7BFC8003B2FB9 /* MFSizeThreshold.h in Headers */,
|
D29DF2CA21E7BFC8003B2FB9 /* MFSizeThreshold.h in Headers */,
|
||||||
D29DF28021E7AA51003B2FB9 /* MVMCoreUIDetailViewProtocol.h in Headers */,
|
D29DF28021E7AA51003B2FB9 /* MVMCoreUIDetailViewProtocol.h in Headers */,
|
||||||
D29DF2BD21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.h in Headers */,
|
D29DF2BD21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.h in Headers */,
|
||||||
@ -1213,19 +1234,20 @@
|
|||||||
D29DF25421E6A177003B2FB9 /* MFMdnTextField.m in Sources */,
|
D29DF25421E6A177003B2FB9 /* MFMdnTextField.m in Sources */,
|
||||||
D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */,
|
D282AABA224131D100C46919 /* MFTransparentGIFView.swift in Sources */,
|
||||||
944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */,
|
944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */,
|
||||||
|
D213347723843825008E41B3 /* Line.swift in Sources */,
|
||||||
D2A514672213885800345BFB /* StandardHeaderView.swift in Sources */,
|
D2A514672213885800345BFB /* StandardHeaderView.swift in Sources */,
|
||||||
01EB369023609801006832FA /* ListItemModel.swift in Sources */,
|
01EB369023609801006832FA /* ListItemModel.swift in Sources */,
|
||||||
DBEFFA04225A829700230692 /* Label.swift in Sources */,
|
DBEFFA04225A829700230692 /* Label.swift in Sources */,
|
||||||
D2D6CD4022E78C1A00D701B8 /* Scroller.swift in Sources */,
|
D2D6CD4022E78C1A00D701B8 /* Scroller.swift in Sources */,
|
||||||
01509D952327ED1900EF99AA /* HeadlineBodyTextButtonSwitch.swift in Sources */,
|
01509D952327ED1900EF99AA /* HeadlineBodyTextButtonSwitch.swift in Sources */,
|
||||||
D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */,
|
D29DF13021E6851E003B2FB9 /* MVMCoreUITopAlertShortView.m in Sources */,
|
||||||
D28B4F8B21FF967C00712C7A /* MVMCoreUIObject.m in Sources */,
|
|
||||||
0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */,
|
0A1B4A96233BB18F005B3FB4 /* CheckboxWithLabelView.swift in Sources */,
|
||||||
D260D7B222D65BDD007E7233 /* MVMCoreUIPageControl.m in Sources */,
|
D260D7B222D65BDD007E7233 /* MVMCoreUIPageControl.m in Sources */,
|
||||||
D2B18B812360945C00A9AEDC /* View.swift in Sources */,
|
D2B18B812360945C00A9AEDC /* View.swift in Sources */,
|
||||||
D29DF26D21E6AA0B003B2FB9 /* FLAnimatedImageView.m in Sources */,
|
D29DF26D21E6AA0B003B2FB9 /* FLAnimatedImageView.m in Sources */,
|
||||||
D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */,
|
D29DF2EF21ECEAE1003B2FB9 /* MFFonts.m in Sources */,
|
||||||
D22479942316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift in Sources */,
|
D22479942316AE5E003FCCF9 /* NSLayoutConstraintExtension.swift in Sources */,
|
||||||
|
D2B18B94236214AD00A9AEDC /* NavigationController.swift in Sources */,
|
||||||
D282AACB2243C61700C46919 /* ButtonView.swift in Sources */,
|
D282AACB2243C61700C46919 /* ButtonView.swift in Sources */,
|
||||||
D2D6CD4222E78FAB00D701B8 /* ThreeLayerTemplate.swift in Sources */,
|
D2D6CD4222E78FAB00D701B8 /* ThreeLayerTemplate.swift in Sources */,
|
||||||
01EB368F23609801006832FA /* LabelModel.swift in Sources */,
|
01EB368F23609801006832FA /* LabelModel.swift in Sources */,
|
||||||
@ -1244,7 +1266,6 @@
|
|||||||
D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */,
|
D29DF2BF21E7BEA4003B2FB9 /* MVMCoreUITabBarPageControlViewController.m in Sources */,
|
||||||
D29DF28321E7AB24003B2FB9 /* MVMCoreUICommonViewsUtility.m in Sources */,
|
D29DF28321E7AB24003B2FB9 /* MVMCoreUICommonViewsUtility.m in Sources */,
|
||||||
94C2D9842386F3F80006CF46 /* LabelAttributeModel.swift in Sources */,
|
94C2D9842386F3F80006CF46 /* LabelAttributeModel.swift in Sources */,
|
||||||
D206997821FB8A0B00CAE0DE /* MVMCoreUINavigationController.m in Sources */,
|
|
||||||
944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */,
|
944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */,
|
||||||
D29DF27A21E7A533003B2FB9 /* MVMCoreUISession.m in Sources */,
|
D29DF27A21E7A533003B2FB9 /* MVMCoreUISession.m in Sources */,
|
||||||
01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */,
|
01DF55E021F8FAA800CC099B /* MFTextFieldListView.swift in Sources */,
|
||||||
@ -1293,6 +1314,7 @@
|
|||||||
0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */,
|
0105618E224BBE7700E1557D /* FormValidator+TextFields.swift in Sources */,
|
||||||
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */,
|
0A1214A022C11A18007C7030 /* ActionDetailWithImage.swift in Sources */,
|
||||||
01EB369123609801006832FA /* MoleculeStackItemModel.swift in Sources */,
|
01EB369123609801006832FA /* MoleculeStackItemModel.swift in Sources */,
|
||||||
|
D2B18B922361E65A00A9AEDC /* CoreUIObject.swift in Sources */,
|
||||||
D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */,
|
D29DF2BE21E7BEA4003B2FB9 /* TopTabbar.m in Sources */,
|
||||||
D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */,
|
D2A514632213643100345BFB /* MoleculeStackCenteredTemplate.swift in Sources */,
|
||||||
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */,
|
D29DF32421ED0DA2003B2FB9 /* TextButtonView.m in Sources */,
|
||||||
|
|||||||
@ -8,8 +8,7 @@
|
|||||||
//
|
//
|
||||||
|
|
||||||
|
|
||||||
open class CaretView: MFView, ModelMoleculeViewProtocol {
|
open class CaretView: View {
|
||||||
|
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
@ -27,7 +26,7 @@ open class CaretView: MFView, ModelMoleculeViewProtocol {
|
|||||||
// MARK: - Initialization
|
// MARK: - Initialization
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
@objc public init() {
|
@objc public override init() {
|
||||||
super.init(frame: .zero)
|
super.init(frame: .zero)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -100,7 +99,7 @@ open class CaretView: MFView, ModelMoleculeViewProtocol {
|
|||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
// Default values for view.
|
// Default values for view.
|
||||||
@objc open override func setAsMolecule() {
|
@objc open func setAsMolecule() {
|
||||||
defaultState()
|
defaultState()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,12 +124,14 @@ open class CaretView: MFView, ModelMoleculeViewProtocol {
|
|||||||
lineWidth = lineWidthValue
|
lineWidth = lineWidthValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
open override func needsToBeConstrained() -> Bool {
|
|
||||||
|
extension CaretView: MVMCoreUIViewConstrainingProtocol {
|
||||||
|
open func needsToBeConstrained() -> Bool {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
open override func alignment() -> UIStackView.Alignment {
|
open func alignment() -> UIStackView.Alignment {
|
||||||
return UIStackView.Alignment.leading;
|
return UIStackView.Alignment.leading;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -10,7 +10,7 @@
|
|||||||
import MVMCore
|
import MVMCore
|
||||||
|
|
||||||
|
|
||||||
open class DashLine: MFView, ModelMoleculeViewProtocol {
|
open class DashLine: View {
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
// MARK: - Properties
|
// MARK: - Properties
|
||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
@ -64,8 +64,7 @@ open class DashLine: MFView, ModelMoleculeViewProtocol {
|
|||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
// Default values for view.
|
// Default values for view.
|
||||||
@objc open override func setAsMolecule() {
|
@objc open func setAsMolecule() {
|
||||||
|
|
||||||
backgroundColor = .clear
|
backgroundColor = .clear
|
||||||
isHidden = false
|
isHidden = false
|
||||||
}
|
}
|
||||||
|
|||||||
@ -109,7 +109,7 @@ public struct GraphObject {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@objcMembers open class GraphView: View {
|
@objcMembers open class GraphView: View, MVMCoreUIViewConstrainingProtocol {
|
||||||
|
|
||||||
var heightConstraint: NSLayoutConstraint?
|
var heightConstraint: NSLayoutConstraint?
|
||||||
var gradientLayer: CALayer?
|
var gradientLayer: CALayer?
|
||||||
@ -240,6 +240,10 @@ public struct GraphObject {
|
|||||||
|
|
||||||
return containLayer
|
return containLayer
|
||||||
}
|
}
|
||||||
|
//MARK: MVMCoreUIViewConstrainingProtocol
|
||||||
|
public func needsToBeConstrained() -> Bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
//MARK: Animation
|
//MARK: Animation
|
||||||
func rotationAnimation(_ object: GraphObject) {
|
func rotationAnimation(_ object: GraphObject) {
|
||||||
|
|||||||
@ -86,7 +86,6 @@ public typealias ActionBlock = () -> ()
|
|||||||
//------------------------------------------------------
|
//------------------------------------------------------
|
||||||
|
|
||||||
@objc public func setupView() {
|
@objc public func setupView() {
|
||||||
|
|
||||||
backgroundColor = .clear
|
backgroundColor = .clear
|
||||||
numberOfLines = 0
|
numberOfLines = 0
|
||||||
lineBreakMode = .byWordWrapping
|
lineBreakMode = .byWordWrapping
|
||||||
|
|||||||
106
MVMCoreUI/Atoms/Views/Line.swift
Normal file
106
MVMCoreUI/Atoms/Views/Line.swift
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
//
|
||||||
|
// Line.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Scott Pfeil on 11/19/19.
|
||||||
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@objcMembers open class Line: View {
|
||||||
|
|
||||||
|
public var heightConstraint: NSLayoutConstraint?
|
||||||
|
|
||||||
|
public enum Style: String, Codable {
|
||||||
|
case standard
|
||||||
|
case thin
|
||||||
|
case medium
|
||||||
|
case heavy
|
||||||
|
case none
|
||||||
|
}
|
||||||
|
|
||||||
|
public var style = Style.standard {
|
||||||
|
didSet {
|
||||||
|
switch style {
|
||||||
|
case .standard:
|
||||||
|
heightConstraint?.constant = 1
|
||||||
|
backgroundColor = .mfSilver()
|
||||||
|
case .thin:
|
||||||
|
heightConstraint?.constant = 1
|
||||||
|
backgroundColor = .black
|
||||||
|
case .medium:
|
||||||
|
heightConstraint?.constant = 2
|
||||||
|
backgroundColor = .black
|
||||||
|
case .heavy:
|
||||||
|
heightConstraint?.constant = 4
|
||||||
|
backgroundColor = .black
|
||||||
|
case .none:
|
||||||
|
heightConstraint?.constant = 0
|
||||||
|
}
|
||||||
|
setNeedsLayout()
|
||||||
|
layoutIfNeeded()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - Helpers
|
||||||
|
open func shouldBeVisible() -> Bool {
|
||||||
|
guard let type = json?.optionalStringForKey(KeyType) else { return false }
|
||||||
|
return type != "none"
|
||||||
|
}
|
||||||
|
|
||||||
|
public convenience init(pinTo view: UIView, edge: UIRectEdge, useMargin: Bool) {
|
||||||
|
self.init(frame: .zero)
|
||||||
|
view.addSubview(self)
|
||||||
|
NSLayoutConstraint.activate(Array(NSLayoutConstraint.pinView(toSuperview: self, useMargins: useMargin, pinTop: edge != .bottom, pinBottom: edge != .top, pinLeft: edge != .right, pinRight: edge != .left).values))
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - MVMCoreViewProtocol
|
||||||
|
open override func setupView() {
|
||||||
|
super.setupView()
|
||||||
|
backgroundColor = .black
|
||||||
|
heightConstraint = heightAnchor.constraint(equalToConstant: 1)
|
||||||
|
heightConstraint?.isActive = true
|
||||||
|
}
|
||||||
|
|
||||||
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
|
open override func setWithJSON(_ json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable : Any]?) {
|
||||||
|
|
||||||
|
// If no type, default to standard.
|
||||||
|
if let typeString = json?.optionalStringForKey(KeyType), let type = Style.init(rawValue: typeString) {
|
||||||
|
style = type
|
||||||
|
} else {
|
||||||
|
style = .standard
|
||||||
|
}
|
||||||
|
|
||||||
|
super.setWithJSON(json, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
|
}
|
||||||
|
|
||||||
|
open override func reset() {
|
||||||
|
style = .standard
|
||||||
|
}
|
||||||
|
|
||||||
|
open func copyBackgroundColor() -> Bool {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func estimatedHeight(forRow json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
||||||
|
guard let type = json?.optionalStringForKey(KeyType), let style = Style(rawValue: type) else { return 1 }
|
||||||
|
switch style {
|
||||||
|
case .none:
|
||||||
|
return 0
|
||||||
|
case .medium:
|
||||||
|
return 2
|
||||||
|
case .heavy:
|
||||||
|
return 4
|
||||||
|
default:
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension Line: MVMCoreUIViewConstrainingProtocol {
|
||||||
|
open func needsToBeConstrained() -> Bool {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -228,7 +228,9 @@ static const CGFloat CheckBoxHeightWidth = 18.0;
|
|||||||
NSDictionary *constraints = [NSLayoutConstraint constraintPinView:checkedSquare heightConstraint:YES heightConstant:size widthConstraint:YES widthConstant:size];
|
NSDictionary *constraints = [NSLayoutConstraint constraintPinView:checkedSquare heightConstraint:YES heightConstant:size widthConstraint:YES widthConstant:size];
|
||||||
self.checkboxWidth = constraints[ConstraintWidth];
|
self.checkboxWidth = constraints[ConstraintWidth];
|
||||||
self.checkboxHeight = constraints[ConstraintHeight];
|
self.checkboxHeight = constraints[ConstraintHeight];
|
||||||
[NSLayoutConstraint constraintPinSubview:checkedSquare pinTop:YES pinBottom:YES pinLeft:YES pinRight:NO];
|
[NSLayoutConstraint constraintPinSubview:checkedSquare pinTop:NO pinBottom:NO pinLeft:YES pinRight:NO];
|
||||||
|
[checkedSquare.topAnchor constraintGreaterThanOrEqualToAnchor:containterView.topAnchor].active = YES;
|
||||||
|
[containterView.bottomAnchor constraintGreaterThanOrEqualToAnchor:checkedSquare.bottomAnchor].active = YES;
|
||||||
|
|
||||||
self.checkboxRightPinConstraint = [checkedSquare.trailingAnchor constraintEqualToAnchor:containterView.trailingAnchor];
|
self.checkboxRightPinConstraint = [checkedSquare.trailingAnchor constraintEqualToAnchor:containterView.trailingAnchor];
|
||||||
|
|
||||||
@ -255,7 +257,7 @@ static const CGFloat CheckBoxHeightWidth = 18.0;
|
|||||||
Label *descriptionLabel = [Label commonLabelB2:YES];
|
Label *descriptionLabel = [Label commonLabelB2:YES];
|
||||||
[containterView addSubview:descriptionLabel];
|
[containterView addSubview:descriptionLabel];
|
||||||
[NSLayoutConstraint constraintPinSubview:descriptionLabel pinCenterX:NO pinCenterY:YES];
|
[NSLayoutConstraint constraintPinSubview:descriptionLabel pinCenterX:NO pinCenterY:YES];
|
||||||
[NSLayoutConstraint constraintPinSubview:descriptionLabel pinTop:NO pinBottom:NO pinLeft:NO pinRight:YES];
|
[NSLayoutConstraint constraintPinSubview:descriptionLabel pinTop:YES pinBottom:YES pinLeft:NO pinRight:YES];
|
||||||
|
|
||||||
self.descriptionLabelLeadingConstraint = [NSLayoutConstraint constraintWithItem:descriptionLabel attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.checkedSquare attribute:NSLayoutAttributeTrailing multiplier:1 constant:11];
|
self.descriptionLabelLeadingConstraint = [NSLayoutConstraint constraintWithItem:descriptionLabel attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:self.checkedSquare attribute:NSLayoutAttributeTrailing multiplier:1 constant:11];
|
||||||
self.descriptionLabelLeadingConstraint.active = YES;
|
self.descriptionLabelLeadingConstraint.active = YES;
|
||||||
|
|||||||
@ -24,7 +24,7 @@ import UIKit
|
|||||||
guard progressObject.progress > 0.0 else {
|
guard progressObject.progress > 0.0 else {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
let view = MFView(frame: .zero)
|
let view = UIView(frame: .zero)
|
||||||
view.translatesAutoresizingMaskIntoConstraints = false
|
view.translatesAutoresizingMaskIntoConstraints = false
|
||||||
addSubview(view)
|
addSubview(view)
|
||||||
view.backgroundColor = UIColor.mfGet(forHex: progressObject.color)
|
view.backgroundColor = UIColor.mfGet(forHex: progressObject.color)
|
||||||
|
|||||||
@ -35,7 +35,6 @@
|
|||||||
#import "MVMCoreUISession.h"
|
#import "MVMCoreUISession.h"
|
||||||
#import "MVMCoreUILoggingHandler.h"
|
#import "MVMCoreUILoggingHandler.h"
|
||||||
#import "MVMCoreUITabBarPageControlViewController.h"
|
#import "MVMCoreUITabBarPageControlViewController.h"
|
||||||
#import "MVMCoreUINavigationController.h"
|
|
||||||
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||||
@import MVMAnimationFramework;
|
@import MVMAnimationFramework;
|
||||||
|
|
||||||
|
|||||||
@ -62,6 +62,8 @@ extern NSString * _Nonnull const ConstraintWidth;
|
|||||||
#pragma mark - With Margins
|
#pragma mark - With Margins
|
||||||
|
|
||||||
+ (nonnull NSDictionary <NSString *, NSLayoutConstraint *>*)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins;
|
+ (nonnull NSDictionary <NSString *, NSLayoutConstraint *>*)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins;
|
||||||
|
+ (nonnull NSDictionary <NSString *, NSLayoutConstraint *>*)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins pinTop:(BOOL)pinTop pinBottom:(BOOL)pinBottom pinLeft:(BOOL)pinLeft pinRight:(BOOL)pinRight;
|
||||||
|
+ (nonnull NSDictionary <NSString *, NSLayoutConstraint *>*)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins pinTop:(BOOL)pinTop topConstant:(CGFloat)topConstant pinBottom:(BOOL)pinBottom bottomConstant:(CGFloat)bottomConstant pinLeft:(BOOL)pinLeft leftConstant:(CGFloat)leftConstant pinRight:(BOOL)pinRight rightConstant:(CGFloat)rightConstant;
|
||||||
+ (nonnull NSLayoutConstraint *)pinViewTopToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
+ (nonnull NSLayoutConstraint *)pinViewTopToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
||||||
+ (nonnull NSLayoutConstraint *)pinViewLeftToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
+ (nonnull NSLayoutConstraint *)pinViewLeftToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
||||||
+ (nonnull NSLayoutConstraint *)pinViewRightToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
+ (nonnull NSLayoutConstraint *)pinViewRightToSuperview:(nonnull UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant;
|
||||||
|
|||||||
@ -161,11 +161,28 @@ NSString *const ConstraintWidth = @"width";
|
|||||||
#pragma mark - With Margins
|
#pragma mark - With Margins
|
||||||
|
|
||||||
+ (nonnull NSDictionary *)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins {
|
+ (nonnull NSDictionary *)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins {
|
||||||
return @{ConstraintTop:[self pinViewTopToSuperview:subview useMargins:useMargins constant:0],
|
return [NSLayoutConstraint pinViewToSuperview:subview useMargins:useMargins pinTop:YES topConstant:0 pinBottom:YES bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
|
||||||
ConstraintLeading:[self pinViewLeftToSuperview:subview useMargins:useMargins constant:0],
|
}
|
||||||
ConstraintTrailing:[self pinViewRightToSuperview:subview useMargins:useMargins constant:0],
|
|
||||||
ConstraintBot:[self pinViewBottomToSuperview:subview useMargins:useMargins constant:0],
|
+ (nonnull NSDictionary *)pinViewToSuperview:(nonnull UIView *)subview useMargins:(BOOL)useMargins pinTop:(BOOL)pinTop pinBottom:(BOOL)pinBottom pinLeft:(BOOL)pinLeft pinRight:(BOOL)pinRight {
|
||||||
};
|
return [NSLayoutConstraint pinViewToSuperview:subview useMargins:useMargins pinTop:pinTop topConstant:0 pinBottom:pinBottom bottomConstant:0 pinLeft:pinLeft leftConstant:0 pinRight:pinRight rightConstant:0];
|
||||||
|
}
|
||||||
|
|
||||||
|
+ (NSDictionary *)pinViewToSuperview:(UIView *)subview useMargins:(BOOL)useMargins pinTop:(BOOL)pinTop topConstant:(CGFloat)topConstant pinBottom:(BOOL)pinBottom bottomConstant:(CGFloat)bottomConstant pinLeft:(BOOL)pinLeft leftConstant:(CGFloat)leftConstant pinRight:(BOOL)pinRight rightConstant:(CGFloat)rightConstant {
|
||||||
|
NSMutableDictionary *constraints = [[NSMutableDictionary alloc] init];
|
||||||
|
if (pinTop) {
|
||||||
|
[constraints setObject:[self pinViewTopToSuperview:subview useMargins:useMargins constant:topConstant] forKey:ConstraintTop];
|
||||||
|
}
|
||||||
|
if (pinLeft) {
|
||||||
|
[constraints setObject:[self pinViewLeftToSuperview:subview useMargins:useMargins constant:topConstant] forKey:ConstraintLeading];
|
||||||
|
}
|
||||||
|
if (pinRight) {
|
||||||
|
[constraints setObject:[self pinViewRightToSuperview:subview useMargins:useMargins constant:topConstant] forKey:ConstraintTrailing];
|
||||||
|
}
|
||||||
|
if (pinBottom) {
|
||||||
|
[constraints setObject:[self pinViewBottomToSuperview:subview useMargins:useMargins constant:topConstant] forKey:ConstraintBot];
|
||||||
|
}
|
||||||
|
return constraints;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ (NSLayoutConstraint *)pinViewTopToSuperview:(UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant {
|
+ (NSLayoutConstraint *)pinViewTopToSuperview:(UIView *)view useMargins:(BOOL)useMargins constant:(CGFloat)constant {
|
||||||
|
|||||||
@ -1,28 +0,0 @@
|
|||||||
//
|
|
||||||
// MVMCoreUINavigationController.h
|
|
||||||
// MVMCoreUI
|
|
||||||
//
|
|
||||||
// Created by Scott Pfeil on 1/25/19.
|
|
||||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
@class SeparatorView;
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
|
||||||
|
|
||||||
@interface MVMCoreUINavigationController : UINavigationController
|
|
||||||
|
|
||||||
// Convenience getter
|
|
||||||
+ (nullable instancetype)navigationController;
|
|
||||||
|
|
||||||
// Returns a navigation controller with the mvm styling. Also sets the navigation controller in the appropriate handlers.
|
|
||||||
+ (nullable instancetype)setupNavigationController;
|
|
||||||
|
|
||||||
// Returns a navigation controller with the mvm styling. Also sets the navigation controller in the appropriate handlers. Adds the default loading overlay screen as well.
|
|
||||||
+ (nullable instancetype)setupWithNavigationControllerAsMainController;
|
|
||||||
|
|
||||||
// Separator at the bottom of the navigation bar used for styling.
|
|
||||||
@property (nullable, weak, nonatomic) SeparatorView *separatorView;
|
|
||||||
@end
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
|
||||||
@ -1,52 +0,0 @@
|
|||||||
//
|
|
||||||
// MVMCoreUINavigationController.m
|
|
||||||
// MVMCoreUI
|
|
||||||
//
|
|
||||||
// Created by Scott Pfeil on 1/25/19.
|
|
||||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "MVMCoreUINavigationController.h"
|
|
||||||
#import "UIColor+MFConvenience.h"
|
|
||||||
#import "SeparatorView.h"
|
|
||||||
#import "MFFonts.h"
|
|
||||||
#import "MFSizeObject.h"
|
|
||||||
#import "MVMCoreUISession.h"
|
|
||||||
@import MVMCore.MVMCoreActionUtility;
|
|
||||||
@import MVMCore.MVMCoreNavigationHandler;
|
|
||||||
@interface MVMCoreUINavigationController ()
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation MVMCoreUINavigationController
|
|
||||||
|
|
||||||
+ (nullable instancetype)navigationController {
|
|
||||||
return [MVMCoreActionUtility initializerClassCheck:[MVMCoreUISession sharedGlobal].navigationController classToVerify:self];
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (nullable instancetype)setupNavigationController {
|
|
||||||
MVMCoreUINavigationController *navigationController = [[MVMCoreUINavigationController alloc] init];
|
|
||||||
[UIColor mfSetBackgroundColorForNavigationBar:[UIColor whiteColor] navigationBar:navigationController.navigationBar transparent:NO];
|
|
||||||
[navigationController.navigationBar setShadowImage:[[UIImage alloc] init]];
|
|
||||||
navigationController.navigationBar.translucent = NO;
|
|
||||||
navigationController.navigationBar.opaque = YES;
|
|
||||||
navigationController.navigationBar.tintColor = [UIColor blackColor];
|
|
||||||
navigationController.separatorView = [SeparatorView separatorAddToView:navigationController.navigationBar position:SeparatorPositionBot withHorizontalPadding:0];
|
|
||||||
[navigationController.separatorView setAsLight];
|
|
||||||
[navigationController.navigationBar setTitleTextAttributes:@{NSFontAttributeName:[MFFonts mfFont75Bd:[[MFSizeObject sizeObjectWithStandardSize:14 standardiPadPortraitSize:16 iPadProLandscapeSize:18] getValueBasedOnScreenSize]]}];
|
|
||||||
|
|
||||||
// Set standard
|
|
||||||
[MVMCoreUISession sharedGlobal].navigationController = navigationController;
|
|
||||||
[MVMCoreNavigationHandler sharedNavigationHandler].navigationController = navigationController;
|
|
||||||
[MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn = navigationController;
|
|
||||||
|
|
||||||
return navigationController;
|
|
||||||
}
|
|
||||||
|
|
||||||
+ (nullable instancetype)setupWithNavigationControllerAsMainController {
|
|
||||||
MVMCoreUINavigationController *navigationController = [self setupNavigationController];
|
|
||||||
[[MVMCoreUISession sharedGlobal] setupAsStandardLoadViewDelegate:navigationController];
|
|
||||||
return navigationController;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
44
MVMCoreUI/Containers/NavigationController.swift
Normal file
44
MVMCoreUI/Containers/NavigationController.swift
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
//
|
||||||
|
// NavigationController.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Scott Pfeil on 10/24/19.
|
||||||
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@objcMembers open class NavigationController: UINavigationController {
|
||||||
|
public var separatorView: Line?
|
||||||
|
|
||||||
|
public static func navigationController() -> Self? {
|
||||||
|
return MVMCoreActionUtility.initializerClassCheck(MVMCoreUISession.sharedGlobal()?.navigationController, classToVerify: self) as? Self
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func style(_ navigationBar: UINavigationBar) {
|
||||||
|
UIColor.mfSetBackgroundColor(forNavigationBar: .white, navigationBar: navigationBar, transparent: false)
|
||||||
|
navigationBar.shadowImage = UIImage()
|
||||||
|
navigationBar.isOpaque = true
|
||||||
|
navigationBar.tintColor = .black
|
||||||
|
if let font = MFFonts.mfFont75Bd(MFSizeObject(standardSize: 14, standardiPadPortraitSize: 16, iPadProLandscapeSize: 18)?.getValueBasedOnScreenSize() ?? 14) {
|
||||||
|
navigationBar.titleTextAttributes = [NSAttributedString.Key.font: font];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func setupNavigationController() -> Self? {
|
||||||
|
let navigationController = self.init()
|
||||||
|
style(navigationController.navigationBar)
|
||||||
|
navigationController.separatorView = Line(pinTo: navigationController.navigationBar, edge: .bottom, useMargin: false)
|
||||||
|
navigationController.separatorView?.style = .standard
|
||||||
|
MVMCoreUISession.sharedGlobal()?.navigationController = navigationController
|
||||||
|
MVMCoreNavigationHandler.shared()?.viewControllerToPresentOn = navigationController
|
||||||
|
MVMCoreNavigationHandler.shared()?.navigationController = navigationController
|
||||||
|
return navigationController
|
||||||
|
}
|
||||||
|
|
||||||
|
public static func setupNavigationControllerAsMainController() -> Self? {
|
||||||
|
guard let navigationController = setupNavigationController() else { return nil }
|
||||||
|
MVMCoreUISession.sharedGlobal()?.setup(asStandardLoadViewDelegate: navigationController)
|
||||||
|
return navigationController
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,10 +11,9 @@
|
|||||||
@import MVMCore.MVMCoreActionDelegateProtocol;
|
@import MVMCore.MVMCoreActionDelegateProtocol;
|
||||||
#import <MVMCoreUI/MVMCoreUIPanelProtocol.h>
|
#import <MVMCoreUI/MVMCoreUIPanelProtocol.h>
|
||||||
#import <MVMCoreUI/MVMCoreUIPanelButtonProtocol.h>
|
#import <MVMCoreUI/MVMCoreUIPanelButtonProtocol.h>
|
||||||
|
|
||||||
@class MVMCoreUINavigationController;
|
|
||||||
@class MVMCoreUITopAlertView;
|
@class MVMCoreUITopAlertView;
|
||||||
@class MFViewController;
|
@class MFViewController;
|
||||||
|
@class NavigationController;
|
||||||
|
|
||||||
typedef NS_ENUM(NSInteger, MFNumberOfDrawers) {
|
typedef NS_ENUM(NSInteger, MFNumberOfDrawers) {
|
||||||
MFNoDrawer = 0,
|
MFNoDrawer = 0,
|
||||||
@ -34,7 +33,7 @@ typedef NS_ENUM(NSInteger, MFNumberOfDrawers) {
|
|||||||
|
|
||||||
@property (nullable, strong, nonatomic) UIBarButtonItem *backButton;
|
@property (nullable, strong, nonatomic) UIBarButtonItem *backButton;
|
||||||
|
|
||||||
@property (nullable, weak, nonatomic, readonly) MVMCoreUINavigationController *navigationController;
|
@property (nullable, weak, nonatomic, readonly) NavigationController *navigationController;
|
||||||
|
|
||||||
// Reference to the top alert view
|
// Reference to the top alert view
|
||||||
@property (nullable, weak, nonatomic) MVMCoreUITopAlertView *topAlertView;
|
@property (nullable, weak, nonatomic) MVMCoreUITopAlertView *topAlertView;
|
||||||
|
|||||||
@ -23,7 +23,7 @@
|
|||||||
#import "MVMCoreUIConstants.h"
|
#import "MVMCoreUIConstants.h"
|
||||||
#import "MVMCoreUICommonViewsUtility.h"
|
#import "MVMCoreUICommonViewsUtility.h"
|
||||||
#import "MVMCoreUITopAlertView.h"
|
#import "MVMCoreUITopAlertView.h"
|
||||||
#import "MVMCoreUINavigationController.h"
|
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||||
|
|
||||||
@interface MVMCoreUISplitViewController ()
|
@interface MVMCoreUISplitViewController ()
|
||||||
|
|
||||||
@ -50,7 +50,7 @@ typedef NS_OPTIONS(NSInteger, MFExtendedDrawer) {
|
|||||||
|
|
||||||
@property (weak, nonatomic, readwrite) UIViewController <MVMCoreUIPanelProtocol> *leftPanel;
|
@property (weak, nonatomic, readwrite) UIViewController <MVMCoreUIPanelProtocol> *leftPanel;
|
||||||
@property (weak, nonatomic, readwrite) UIViewController <MVMCoreUIPanelProtocol> *rightPanel;
|
@property (weak, nonatomic, readwrite) UIViewController <MVMCoreUIPanelProtocol> *rightPanel;
|
||||||
@property (weak, nonatomic, readwrite) MVMCoreUINavigationController *navigationController;
|
@property (weak, nonatomic, readwrite) NavigationController *navigationController;
|
||||||
|
|
||||||
// A view that covers the detail view when the master is out.
|
// A view that covers the detail view when the master is out.
|
||||||
@property (weak, nonatomic) IBOutlet UIView *mainViewCoverView;
|
@property (weak, nonatomic) IBOutlet UIView *mainViewCoverView;
|
||||||
@ -802,7 +802,7 @@ CGFloat const PanelAnimationDuration = 0.2;
|
|||||||
}
|
}
|
||||||
|
|
||||||
// The main view.
|
// The main view.
|
||||||
MVMCoreUINavigationController *navigationController = [MVMCoreUINavigationController setupNavigationController];
|
NavigationController *navigationController = [NavigationController setupNavigationController];
|
||||||
self.navigationController = navigationController;
|
self.navigationController = navigationController;
|
||||||
self.automaticallyAdjustsScrollViewInsets = NO;
|
self.automaticallyAdjustsScrollViewInsets = NO;
|
||||||
|
|
||||||
|
|||||||
@ -71,4 +71,6 @@
|
|||||||
- (BOOL)bottomViewOutsideOfScroll;
|
- (BOOL)bottomViewOutsideOfScroll;
|
||||||
//override for setting attributed headline and message
|
//override for setting attributed headline and message
|
||||||
-(void)setHeadlineAndMessage;
|
-(void)setHeadlineAndMessage;
|
||||||
|
- (nullable UIView *)topAccessoryView;
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@ -31,6 +31,7 @@
|
|||||||
@property (strong, nonatomic) UIView *footerViewOutsideOfScroll;
|
@property (strong, nonatomic) UIView *footerViewOutsideOfScroll;
|
||||||
@property (strong, nonatomic) NSLayoutConstraint *bottomViewTopConstraint;
|
@property (strong, nonatomic) NSLayoutConstraint *bottomViewTopConstraint;
|
||||||
@property (strong, nonatomic) UIView *headerAccessoryView;
|
@property (strong, nonatomic) UIView *headerAccessoryView;
|
||||||
|
@property (strong, nonatomic) UIView *topAccessoryView;
|
||||||
|
|
||||||
|
|
||||||
@end
|
@end
|
||||||
@ -70,6 +71,9 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (nullable UIView *)topAccessoryView {
|
||||||
|
return nil;
|
||||||
|
}
|
||||||
|
|
||||||
- (void)newDataBuildScreen {
|
- (void)newDataBuildScreen {
|
||||||
[super newDataBuildScreen];
|
[super newDataBuildScreen];
|
||||||
@ -92,10 +96,10 @@
|
|||||||
[self setHeadlineAndMessage];
|
[self setHeadlineAndMessage];
|
||||||
self.topView = topLabelsView;
|
self.topView = topLabelsView;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Setup accessory view.
|
// Setup accessory view.
|
||||||
[self setUpHeaderAccessoryView];
|
[self setUpHeaderAccessoryView];
|
||||||
|
|
||||||
// add top view to table header
|
// add top view to table header
|
||||||
if (self.topView) {
|
if (self.topView) {
|
||||||
self.topView.translatesAutoresizingMaskIntoConstraints = NO;
|
self.topView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||||
@ -253,16 +257,26 @@
|
|||||||
UIView *headerAccessoryView = self.headerAccessoryView;
|
UIView *headerAccessoryView = self.headerAccessoryView;
|
||||||
[header addSubview:topView];
|
[header addSubview:topView];
|
||||||
[header addSubview:headerAccessoryView];
|
[header addSubview:headerAccessoryView];
|
||||||
|
|
||||||
// Sets up the constraints
|
UIView *topAccessoryView = [self topAccessoryView];
|
||||||
if (headerAccessoryView) {
|
self.topAccessoryView = topAccessoryView;
|
||||||
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topView]-0-[headerAccessoryView]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView,headerAccessoryView)]];
|
if (topAccessoryView) {
|
||||||
[NSLayoutConstraint constraintPinSubview:topView pinTop:YES topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
|
[header addSubview:topAccessoryView];
|
||||||
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:headerAccessoryView pinTop:NO topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
|
[NSLayoutConstraint constraintPinSubview:topAccessoryView pinTop:YES pinBottom:NO pinLeft:YES pinRight:YES];
|
||||||
}
|
[topAccessoryView.bottomAnchor constraintEqualToAnchor:topView.topAnchor constant:0].active = YES;
|
||||||
else {
|
}
|
||||||
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:topView pinTop:YES topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
|
|
||||||
}
|
BOOL topPin = topAccessoryView ? NO : YES;
|
||||||
|
// Sets up the constraints
|
||||||
|
if (headerAccessoryView) {
|
||||||
|
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[topView]-0-[headerAccessoryView]" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView,headerAccessoryView)]];
|
||||||
|
[NSLayoutConstraint constraintPinSubview:topView pinTop:topPin topConstant:0 pinBottom:NO bottomConstant:0 pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0];
|
||||||
|
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:headerAccessoryView pinTop:NO topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
self.topViewBottomConstraint = [[NSLayoutConstraint constraintPinSubview:topView pinTop:topPin topConstant:0 pinBottom:YES bottomConstant:[[self spaceAboveBetweenView] floatValue] pinLeft:YES leftConstant:0 pinRight:YES rightConstant:0] objectForKey:ConstraintBot ofType:[NSLayoutConstraint class]];
|
||||||
|
}
|
||||||
|
|
||||||
self.headerView = header;
|
self.headerView = header;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -281,6 +295,7 @@
|
|||||||
self.footerView = footer;
|
self.footerView = footer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
- (void)showHeader {
|
- (void)showHeader {
|
||||||
|
|
||||||
if (self.headerView) {
|
if (self.headerView) {
|
||||||
@ -459,6 +474,10 @@
|
|||||||
|
|
||||||
#pragma mark - Animation
|
#pragma mark - Animation
|
||||||
-(void)setupIntroAnimations {
|
-(void)setupIntroAnimations {
|
||||||
|
|
||||||
|
if (self.topAccessoryView.subviews.count) {
|
||||||
|
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topAccessoryView]];
|
||||||
|
}
|
||||||
if (self.topView.subviews.count) {
|
if (self.topView.subviews.count) {
|
||||||
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
|
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
|
||||||
}
|
}
|
||||||
@ -38,6 +38,8 @@
|
|||||||
|
|
||||||
#pragma mark - Subclass
|
#pragma mark - Subclass
|
||||||
|
|
||||||
|
- (nullable UIView *)topAccessoryView;
|
||||||
|
|
||||||
// Allow you to add any additional ui before buildViewsBetweenLabelsAndButtons gets called. Can use this to set the topBetweenEdgeView or bottomBetweenEdgeView
|
// Allow you to add any additional ui before buildViewsBetweenLabelsAndButtons gets called. Can use this to set the topBetweenEdgeView or bottomBetweenEdgeView
|
||||||
- (void)buildInAdditionalViewsBeforeCenteredContent;
|
- (void)buildInAdditionalViewsBeforeCenteredContent;
|
||||||
// For subclassing. Should return all the views that will be in between labels and buttons. Override standardSpaceAroundUIObject to handle spacing.
|
// For subclassing. Should return all the views that will be in between labels and buttons. Override standardSpaceAroundUIObject to handle spacing.
|
||||||
@ -31,6 +31,8 @@
|
|||||||
|
|
||||||
@property (nullable, weak, nonatomic) UIView *betweenView;
|
@property (nullable, weak, nonatomic) UIView *betweenView;
|
||||||
|
|
||||||
|
@property (strong, nonatomic) UIView *topAccessoryView;
|
||||||
|
|
||||||
// Adds the button view to the screen. Out of the scroll or in.
|
// Adds the button view to the screen. Out of the scroll or in.
|
||||||
- (void)addViewOutsideOfScrollView:(UIView *)bottomView;
|
- (void)addViewOutsideOfScrollView:(UIView *)bottomView;
|
||||||
- (void)addViewToContentView:(UIView *)bottomView;
|
- (void)addViewToContentView:(UIView *)bottomView;
|
||||||
@ -101,7 +103,7 @@
|
|||||||
// Removes the bottom view out of scroll if it is there.
|
// Removes the bottom view out of scroll if it is there.
|
||||||
[self.viewOutOfScroll removeFromSuperview];
|
[self.viewOutOfScroll removeFromSuperview];
|
||||||
[StackableViewController removeUIViews:[self.contentView subviews]];
|
[StackableViewController removeUIViews:[self.contentView subviews]];
|
||||||
|
|
||||||
// Checks if we are using a different object than top labels.
|
// Checks if we are using a different object than top labels.
|
||||||
UIView *topView = [self useCustomViewInsteadOfLabels];
|
UIView *topView = [self useCustomViewInsteadOfLabels];
|
||||||
self.topView = topView;
|
self.topView = topView;
|
||||||
@ -115,9 +117,19 @@
|
|||||||
}
|
}
|
||||||
[self.contentView addSubview:topView];
|
[self.contentView addSubview:topView];
|
||||||
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView)]];
|
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topView)]];
|
||||||
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
|
|
||||||
|
UIView *topAccessoryView = [self topAccessoryView];
|
||||||
|
self.topAccessoryView = topAccessoryView;
|
||||||
|
if (topAccessoryView) {
|
||||||
|
[self.contentView addSubview:topAccessoryView];
|
||||||
|
[NSLayoutConstraint activateConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-0-[topAccessoryView]-0-|" options:NSLayoutFormatDirectionLeadingToTrailing metrics:nil views:NSDictionaryOfVariableBindings(topAccessoryView)]];
|
||||||
|
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topAccessoryView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
|
||||||
|
[topAccessoryView.bottomAnchor constraintEqualToAnchor:topView.topAnchor constant:0].active = YES;
|
||||||
|
} else {
|
||||||
|
self.topConstraintForTopView = [NSLayoutConstraint constraintWithItem:topView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:self.contentView attribute:NSLayoutAttributeTop multiplier:1.0 constant:0];
|
||||||
|
}
|
||||||
|
|
||||||
self.topConstraintForTopView.active = YES;
|
self.topConstraintForTopView.active = YES;
|
||||||
|
|
||||||
// Checks if we are using a different object than the bottom buttons.
|
// Checks if we are using a different object than the bottom buttons.
|
||||||
UIView *bottomView = [self useCustomViewInsteadOfButtons];
|
UIView *bottomView = [self useCustomViewInsteadOfButtons];
|
||||||
self.customBottemView = (bottomView != nil);
|
self.customBottemView = (bottomView != nil);
|
||||||
@ -266,7 +278,10 @@
|
|||||||
if (self.topLabelsView) {
|
if (self.topLabelsView) {
|
||||||
[self.topLabelsView setHeadlineString:[[self mapForTopLabels] stringForKey:KeyTitle] messageString:[[self mapForTopLabels] stringForKey:KeyMessage]];
|
[self.topLabelsView setHeadlineString:[[self mapForTopLabels] stringForKey:KeyTitle] messageString:[[self mapForTopLabels] stringForKey:KeyMessage]];
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- (nullable UIView *)topAccessoryView {
|
||||||
|
return nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)updateViewConstraints {
|
- (void)updateViewConstraints {
|
||||||
@ -409,6 +424,11 @@
|
|||||||
|
|
||||||
#pragma mark - Animations
|
#pragma mark - Animations
|
||||||
-(void)setupIntroAnimations {
|
-(void)setupIntroAnimations {
|
||||||
|
|
||||||
|
if (self.topAccessoryView.subviews.count) {
|
||||||
|
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topAccessoryView]];
|
||||||
|
}
|
||||||
|
|
||||||
if (self.topView.subviews) {
|
if (self.topView.subviews) {
|
||||||
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
|
[self.introAnimationManager addAnimationWithAnimation:[MVMAnimations fadeUpAnimationWithView:self.topView]];
|
||||||
}
|
}
|
||||||
@ -16,7 +16,6 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
|
|||||||
|
|
||||||
// In this header, you should import all the public headers of your framework using statements like #import <MVMCoreUI/PublicHeader.h>
|
// In this header, you should import all the public headers of your framework using statements like #import <MVMCoreUI/PublicHeader.h>
|
||||||
#pragma mark - OtherHandlers
|
#pragma mark - OtherHandlers
|
||||||
#import <MVMCoreUI/MVMCoreUIObject.h>
|
|
||||||
#import <MVMCoreUI/MVMCoreUISession.h>
|
#import <MVMCoreUI/MVMCoreUISession.h>
|
||||||
#import <MVMCoreUI/MVMCoreUILoggingHandler.h>
|
#import <MVMCoreUI/MVMCoreUILoggingHandler.h>
|
||||||
#import <MVMCoreUI/MVMCoreUIViewControllerMappingObject.h>
|
#import <MVMCoreUI/MVMCoreUIViewControllerMappingObject.h>
|
||||||
@ -59,8 +58,6 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
|
|||||||
#import <MVMCoreUI/TopLabelsAndBottomButtonsTableViewController.h>
|
#import <MVMCoreUI/TopLabelsAndBottomButtonsTableViewController.h>
|
||||||
|
|
||||||
#pragma mark - Containers
|
#pragma mark - Containers
|
||||||
#import <MVMCoreUI/MVMCoreUINavigationController.h>
|
|
||||||
|
|
||||||
#import <MVMCoreUI/MVMCoreUIPanelProtocol.h>
|
#import <MVMCoreUI/MVMCoreUIPanelProtocol.h>
|
||||||
#import <MVMCoreUI/MVMCoreUIDetailViewProtocol.h>
|
#import <MVMCoreUI/MVMCoreUIDetailViewProtocol.h>
|
||||||
#import <MVMCoreUI/MVMCoreUIPanelButtonProtocol.h>
|
#import <MVMCoreUI/MVMCoreUIPanelButtonProtocol.h>
|
||||||
|
|||||||
@ -21,8 +21,8 @@ import UIKit
|
|||||||
private var caretViewHeightSizeObject: MFSizeObject?
|
private var caretViewHeightSizeObject: MFSizeObject?
|
||||||
|
|
||||||
// For separation between cells.
|
// For separation between cells.
|
||||||
public var topSeparatorView: SeparatorView?
|
public var topSeparatorView: Line?
|
||||||
public var bottomSeparatorView: SeparatorView?
|
public var bottomSeparatorView: Line?
|
||||||
public enum SeparatorFrequency: String {
|
public enum SeparatorFrequency: String {
|
||||||
case all
|
case all
|
||||||
case allExceptTop
|
case allExceptTop
|
||||||
@ -57,21 +57,22 @@ import UIKit
|
|||||||
open func styleStandard() {
|
open func styleStandard() {
|
||||||
topMarginPadding = 24
|
topMarginPadding = 24
|
||||||
bottomMarginPadding = 24
|
bottomMarginPadding = 24
|
||||||
bottomSeparatorView?.show()
|
topSeparatorView?.style = .none
|
||||||
bottomSeparatorView?.setAsLight()
|
bottomSeparatorView?.style = .standard
|
||||||
}
|
}
|
||||||
|
|
||||||
open func styleHeader() {
|
open func styleHeader() {
|
||||||
topMarginPadding = 48
|
topMarginPadding = 48
|
||||||
bottomMarginPadding = 16
|
bottomMarginPadding = 16
|
||||||
bottomSeparatorView?.show()
|
topSeparatorView?.style = .none
|
||||||
bottomSeparatorView?.setAsRegular()
|
bottomSeparatorView?.style = .thin
|
||||||
}
|
}
|
||||||
|
|
||||||
open func styleNone() {
|
open func styleNone() {
|
||||||
topMarginPadding = 0
|
topMarginPadding = 0
|
||||||
bottomMarginPadding = 0
|
bottomMarginPadding = 0
|
||||||
bottomSeparatorView?.hide()
|
topSeparatorView?.style = .none
|
||||||
|
bottomSeparatorView?.style = .none
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Adds the molecule to the view.
|
/// Adds the molecule to the view.
|
||||||
@ -111,23 +112,25 @@ import UIKit
|
|||||||
// MARK: - MFViewProtocol
|
// MARK: - MFViewProtocol
|
||||||
public func updateView(_ size: CGFloat) {
|
public func updateView(_ size: CGFloat) {
|
||||||
MFStyler.setMarginsFor(self, size: size, defaultHorizontal: updateViewHorizontalDefaults, top: topMarginPadding, bottom: bottomMarginPadding)
|
MFStyler.setMarginsFor(self, size: size, defaultHorizontal: updateViewHorizontalDefaults, top: topMarginPadding, bottom: bottomMarginPadding)
|
||||||
|
|
||||||
if accessoryView != nil {
|
if accessoryView != nil {
|
||||||
// Smaller left margin if accessory view.
|
// Smaller left margin if accessory view.
|
||||||
var margin = directionalLayoutMargins
|
var margin = directionalLayoutMargins
|
||||||
margin.trailing = 16
|
margin.trailing = 16
|
||||||
contentView.directionalLayoutMargins = margin
|
contentView.directionalLayoutMargins = margin
|
||||||
|
|
||||||
|
// Update caret automatically.
|
||||||
|
if let caretView = caretView, let widthObject = caretViewWidthSizeObject, let heightObject = caretViewHeightSizeObject {
|
||||||
|
caretView.frame = CGRect(x: 0, y: 0, width: widthObject.getValueBased(onSize: size), height: heightObject.getValueBased(onSize: size))
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
contentView.directionalLayoutMargins = directionalLayoutMargins
|
contentView.directionalLayoutMargins = directionalLayoutMargins
|
||||||
}
|
}
|
||||||
topSeparatorView?.setLeftAndRightPinConstant(directionalLayoutMargins.leading)
|
|
||||||
bottomSeparatorView?.setLeftAndRightPinConstant(directionalLayoutMargins.leading)
|
|
||||||
|
|
||||||
molecule?.updateView(size)
|
|
||||||
if let _ = accessoryView, let caretView = caretView, let widthObject = caretViewWidthSizeObject, let heightObject = caretViewHeightSizeObject {
|
|
||||||
caretView.frame = CGRect(x: 0, y: 0, width: widthObject.getValueBased(onSize: size), height: heightObject.getValueBased(onSize: size))
|
|
||||||
}
|
|
||||||
topSeparatorView?.updateView(size)
|
topSeparatorView?.updateView(size)
|
||||||
bottomSeparatorView?.updateView(size)
|
bottomSeparatorView?.updateView(size)
|
||||||
|
|
||||||
|
molecule?.updateView(size)
|
||||||
}
|
}
|
||||||
|
|
||||||
public func setupView() {
|
public func setupView() {
|
||||||
@ -256,8 +259,8 @@ import UIKit
|
|||||||
setSeparatorFrequency(separatorFrequency, indexPath: indexPath)
|
setSeparatorFrequency(separatorFrequency, indexPath: indexPath)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
topSeparatorView?.hide()
|
topSeparatorView?.style = .standard
|
||||||
bottomSeparatorView?.setAsLight()
|
bottomSeparatorView?.style = .standard
|
||||||
setSeparatorFrequency(TableViewCell.SeparatorFrequency.allExceptTop, indexPath: indexPath)
|
setSeparatorFrequency(TableViewCell.SeparatorFrequency.allExceptTop, indexPath: indexPath)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -275,12 +278,22 @@ import UIKit
|
|||||||
// MARK: - Separator
|
// MARK: - Separator
|
||||||
open func addSeparatorsIfNeeded() {
|
open func addSeparatorsIfNeeded() {
|
||||||
if topSeparatorView == nil {
|
if topSeparatorView == nil {
|
||||||
topSeparatorView = SeparatorView.separatorAdd(to: self, position: SeparatorPositionTop)
|
let line = Line()
|
||||||
topSeparatorView?.hide()
|
line.style = .none
|
||||||
|
addSubview(line)
|
||||||
|
NSLayoutConstraint.pinViewTop(toSuperview: line, useMargins: false, constant: 0).isActive = true
|
||||||
|
NSLayoutConstraint.pinViewLeft(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
|
NSLayoutConstraint.pinViewRight(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
|
topSeparatorView = line
|
||||||
}
|
}
|
||||||
if bottomSeparatorView == nil {
|
if bottomSeparatorView == nil {
|
||||||
bottomSeparatorView = SeparatorView.separatorAdd(to: self, position: SeparatorPositionBot)
|
let line = Line()
|
||||||
bottomSeparatorView?.hide()
|
line.style = .none
|
||||||
|
addSubview(line)
|
||||||
|
NSLayoutConstraint.pinViewBottom(toSuperview: line, useMargins: false, constant: 0).isActive = true
|
||||||
|
NSLayoutConstraint.pinViewLeft(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
|
NSLayoutConstraint.pinViewRight(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
|
bottomSeparatorView = line
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -289,26 +302,26 @@ import UIKit
|
|||||||
switch separatorFrequency {
|
switch separatorFrequency {
|
||||||
case .all:
|
case .all:
|
||||||
if indexPath.row == 0 {
|
if indexPath.row == 0 {
|
||||||
topSeparatorView?.show()
|
topSeparatorView?.isHidden = false
|
||||||
} else {
|
} else {
|
||||||
topSeparatorView?.hide()
|
topSeparatorView?.isHidden = true
|
||||||
}
|
}
|
||||||
bottomSeparatorView?.show()
|
bottomSeparatorView?.isHidden = false
|
||||||
case .allExceptBottom:
|
case .allExceptBottom:
|
||||||
topSeparatorView?.show()
|
topSeparatorView?.isHidden = false
|
||||||
bottomSeparatorView?.hide()
|
bottomSeparatorView?.isHidden = true
|
||||||
case .between:
|
case .between:
|
||||||
if indexPath.row == 0 {
|
if indexPath.row == 0 {
|
||||||
topSeparatorView?.hide()
|
topSeparatorView?.isHidden = true
|
||||||
} else {
|
} else {
|
||||||
topSeparatorView?.show()
|
topSeparatorView?.isHidden = false
|
||||||
}
|
}
|
||||||
bottomSeparatorView?.hide()
|
bottomSeparatorView?.isHidden = true
|
||||||
case .allExceptTop:
|
case .allExceptTop:
|
||||||
fallthrough
|
fallthrough
|
||||||
default:
|
default:
|
||||||
topSeparatorView?.hide()
|
topSeparatorView?.isHidden = true
|
||||||
bottomSeparatorView?.show()
|
bottomSeparatorView?.isHidden = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,14 +8,13 @@
|
|||||||
|
|
||||||
import UIKit
|
import UIKit
|
||||||
|
|
||||||
public class StandardHeaderView: ViewConstrainingView, ModelMoleculeViewProtocol {
|
public class StandardHeaderView: ViewConstrainingView {
|
||||||
|
var line: Line?
|
||||||
var separatorView: SeparatorView?
|
|
||||||
|
|
||||||
// MARK: - MVMCoreViewProtocol
|
// MARK: - MVMCoreViewProtocol
|
||||||
open override func updateView(_ size: CGFloat) {
|
open override func updateView(_ size: CGFloat) {
|
||||||
super.updateView(size)
|
super.updateView(size)
|
||||||
separatorView?.updateView(size)
|
line?.updateView(size)
|
||||||
}
|
}
|
||||||
|
|
||||||
public override func setupView() {
|
public override func setupView() {
|
||||||
@ -25,21 +24,15 @@ public class StandardHeaderView: ViewConstrainingView, ModelMoleculeViewProtocol
|
|||||||
updateViewHorizontalDefaults = true
|
updateViewHorizontalDefaults = true
|
||||||
topMarginPadding = PaddingDefaultVerticalSpacing
|
topMarginPadding = PaddingDefaultVerticalSpacing
|
||||||
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
||||||
if separatorView == nil, let separatorView = SeparatorView.separatorAdd(to: self, position: SeparatorPositionBot, withHorizontalPadding: 0) {
|
|
||||||
separatorView.setAsHeavy()
|
guard line == nil else { return }
|
||||||
addSubview(separatorView)
|
let line = Line()
|
||||||
self.separatorView = separatorView
|
line.style = .heavy
|
||||||
}
|
addSubview(line)
|
||||||
}
|
NSLayoutConstraint.pinViewBottom(toSuperview: line, useMargins: false, constant: 0).isActive = true
|
||||||
|
NSLayoutConstraint.pinViewLeft(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
public override func setLeftPinConstant(_ constant: CGFloat) {
|
NSLayoutConstraint.pinViewRight(toSuperview: line, useMargins: true, constant: 0).isActive = true
|
||||||
super.setLeftPinConstant(constant)
|
self.line = line
|
||||||
separatorView?.leftPin?.constant = constant
|
|
||||||
}
|
|
||||||
|
|
||||||
public override func setRightPinConstant(_ constant: CGFloat) {
|
|
||||||
super.setRightPinConstant(constant)
|
|
||||||
separatorView?.rightPin?.constant = constant
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// MARK: - MVMCoreUIMoleculeViewProtocol
|
// MARK: - MVMCoreUIMoleculeViewProtocol
|
||||||
@ -51,7 +44,7 @@ public class StandardHeaderView: ViewConstrainingView, ModelMoleculeViewProtocol
|
|||||||
(molecule as? MVMCoreUIViewConstrainingProtocol)?.shouldSetVerticalMargins?(false)
|
(molecule as? MVMCoreUIViewConstrainingProtocol)?.shouldSetVerticalMargins?(false)
|
||||||
|
|
||||||
if let separatorJSON = json?.optionalDictionaryForKey("separator") {
|
if let separatorJSON = json?.optionalDictionaryForKey("separator") {
|
||||||
separatorView?.setWithJSON(separatorJSON, delegateObject: delegateObject, additionalData: additionalData)
|
line?.setWithJSON(separatorJSON, delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,7 +61,7 @@ public class StandardHeaderView: ViewConstrainingView, ModelMoleculeViewProtocol
|
|||||||
}
|
}
|
||||||
|
|
||||||
if let seperatorModel = headerModel.seperator as? LineModel {
|
if let seperatorModel = headerModel.seperator as? LineModel {
|
||||||
separatorView?.setWithJSON(seperatorModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
line?.setWithJSON(seperatorModel.toJSON(), delegateObject: delegateObject, additionalData: additionalData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,8 +69,7 @@ public class StandardHeaderView: ViewConstrainingView, ModelMoleculeViewProtocol
|
|||||||
super.reset()
|
super.reset()
|
||||||
topMarginPadding = PaddingDefaultVerticalSpacing
|
topMarginPadding = PaddingDefaultVerticalSpacing
|
||||||
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
bottomMarginPadding = PaddingDefaultVerticalSpacing
|
||||||
separatorView?.setAsHeavy()
|
line?.style = .heavy
|
||||||
separatorView?.show()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public override class func estimatedHeight(forRow json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
public override class func estimatedHeight(forRow json: [AnyHashable : Any]?, delegateObject: MVMCoreUIDelegateObject?) -> CGFloat {
|
||||||
|
|||||||
23
MVMCoreUI/OtherHandlers/CoreUIObject.swift
Normal file
23
MVMCoreUI/OtherHandlers/CoreUIObject.swift
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// CoreUIObject.swift
|
||||||
|
// MVMCoreUI
|
||||||
|
//
|
||||||
|
// Created by Scott Pfeil on 10/24/19.
|
||||||
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
|
//
|
||||||
|
|
||||||
|
import UIKit
|
||||||
|
|
||||||
|
@objcMembers open class CoreUIObject: MVMCoreObject {
|
||||||
|
public var moleculeMap: MVMCoreUIMoleculeMappingObject?
|
||||||
|
|
||||||
|
open override func defaultInitialSetup() {
|
||||||
|
cache = MVMCoreCache()
|
||||||
|
sessionHandler = MVMCoreSessionTimeHandler()
|
||||||
|
actionHandler = MVMCoreActionHandler()
|
||||||
|
session = MVMCoreUISession()
|
||||||
|
viewControllerMapping = MVMCoreUIViewControllerMappingObject()
|
||||||
|
loggingDelegate = MVMCoreUILoggingHandler()
|
||||||
|
moleculeMap = MVMCoreUIMoleculeMappingObject()
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,7 +11,6 @@
|
|||||||
@import MVMCore.NSDictionary_MFConvenience;
|
@import MVMCore.NSDictionary_MFConvenience;
|
||||||
@import MVMCore.MVMCoreLoadObject;
|
@import MVMCore.MVMCoreLoadObject;
|
||||||
@import MVMCore.MVMCoreErrorObject;
|
@import MVMCore.MVMCoreErrorObject;
|
||||||
#import "MVMCoreUIObject.h"
|
|
||||||
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||||
#import "MFTextField.h"
|
#import "MFTextField.h"
|
||||||
#import "MVMCoreUIPageControl.h"
|
#import "MVMCoreUIPageControl.h"
|
||||||
@ -28,7 +27,7 @@
|
|||||||
dispatch_once(&onceToken, ^{
|
dispatch_once(&onceToken, ^{
|
||||||
mapping = [@{
|
mapping = [@{
|
||||||
@"label": Label.class,
|
@"label": Label.class,
|
||||||
@"line": SeparatorView.class,
|
@"line": Line.class,
|
||||||
@"button": ButtonView.class,
|
@"button": ButtonView.class,
|
||||||
@"textButton": MFTextButton.class,
|
@"textButton": MFTextButton.class,
|
||||||
@"header": StandardHeaderView.class,
|
@"header": StandardHeaderView.class,
|
||||||
@ -45,7 +44,6 @@
|
|||||||
@"progressbar": ProgressBar.class,
|
@"progressbar": ProgressBar.class,
|
||||||
@"circleProgress": GraphView.class,
|
@"circleProgress": GraphView.class,
|
||||||
@"multiProgressBar": MultiProgress.class,
|
@"multiProgressBar": MultiProgress.class,
|
||||||
@"checkbox": MVMCoreUICheckBox.class,
|
|
||||||
@"radioButton": RadioButton.class,
|
@"radioButton": RadioButton.class,
|
||||||
@"radioButtonLabel": RadioButtonLabel.class,
|
@"radioButtonLabel": RadioButtonLabel.class,
|
||||||
@"listItem": MoleculeTableViewCell.class,
|
@"listItem": MoleculeTableViewCell.class,
|
||||||
@ -74,7 +72,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
+ (nullable instancetype)sharedMappingObject {
|
+ (nullable instancetype)sharedMappingObject {
|
||||||
return [MVMCoreActionUtility initializerClassCheck:[MVMCoreUIObject sharedInstance].moleculeMap classToVerify:self];
|
return [MVMCoreActionUtility initializerClassCheck:[CoreUIObject sharedInstance].moleculeMap classToVerify:self];
|
||||||
}
|
}
|
||||||
|
|
||||||
- (instancetype)init {
|
- (instancetype)init {
|
||||||
|
|||||||
@ -1,20 +0,0 @@
|
|||||||
//
|
|
||||||
// MVMCoreUIObject.h
|
|
||||||
// MVMCoreUI
|
|
||||||
//
|
|
||||||
// Created by Scott Pfeil on 1/28/19.
|
|
||||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import <MVMCore/MVMCore.h>
|
|
||||||
#import <MVMCoreUI/MVMCoreUIMoleculeMappingObject.h>
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
|
||||||
|
|
||||||
@interface MVMCoreUIObject : MVMCoreObject
|
|
||||||
|
|
||||||
@property (nullable, nonatomic, strong) MVMCoreUIMoleculeMappingObject *moleculeMap;
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
NS_ASSUME_NONNULL_END
|
|
||||||
@ -1,27 +0,0 @@
|
|||||||
//
|
|
||||||
// MVMCoreUIObject.m
|
|
||||||
// MVMCoreUI
|
|
||||||
//
|
|
||||||
// Created by Scott Pfeil on 1/28/19.
|
|
||||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
|
||||||
//
|
|
||||||
|
|
||||||
#import "MVMCoreUIObject.h"
|
|
||||||
#import "MVMCoreUISession.h"
|
|
||||||
#import "MVMCoreUIViewControllerMappingObject.h"
|
|
||||||
#import "MVMCoreUILoggingHandler.h"
|
|
||||||
|
|
||||||
@implementation MVMCoreUIObject
|
|
||||||
|
|
||||||
- (void)defaultInitialSetup {
|
|
||||||
self.cache = [[MVMCoreCache alloc] init];
|
|
||||||
self.sessionHandler = [[MVMCoreSessionTimeHandler alloc] init];
|
|
||||||
self.actionHandler = [[MVMCoreActionHandler alloc] init];
|
|
||||||
|
|
||||||
self.session = [[MVMCoreUISession alloc] init];
|
|
||||||
self.viewControllerMapping = [[MVMCoreUIViewControllerMappingObject alloc] init];
|
|
||||||
self.loggingDelegate = [[MVMCoreUILoggingHandler alloc] init];
|
|
||||||
self.moleculeMap = [[MVMCoreUIMoleculeMappingObject alloc] init];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
@ -11,15 +11,15 @@
|
|||||||
@class MVMCoreUITopAlertView;
|
@class MVMCoreUITopAlertView;
|
||||||
@class MVMCoreUISplitViewController;
|
@class MVMCoreUISplitViewController;
|
||||||
@class MFViewController;
|
@class MFViewController;
|
||||||
@class MVMCoreUINavigationController;
|
|
||||||
@class MFLoadingViewController;
|
@class MFLoadingViewController;
|
||||||
|
@class NavigationController;
|
||||||
NS_ASSUME_NONNULL_BEGIN
|
NS_ASSUME_NONNULL_BEGIN
|
||||||
|
|
||||||
@interface MVMCoreUISession : MVMCoreSessionObject
|
@interface MVMCoreUISession : MVMCoreSessionObject
|
||||||
|
|
||||||
@property (weak, nonatomic, nullable) MVMCoreUITopAlertView *topAlertView;
|
@property (weak, nonatomic, nullable) MVMCoreUITopAlertView *topAlertView;
|
||||||
@property (weak, nonatomic, nullable) MVMCoreUISplitViewController *splitViewController;
|
@property (weak, nonatomic, nullable) MVMCoreUISplitViewController *splitViewController;
|
||||||
@property (weak, nonatomic, nullable) MVMCoreUINavigationController *navigationController;
|
@property (weak, nonatomic, nullable) NavigationController *navigationController;
|
||||||
@property (weak, nonatomic, nullable) MFLoadingViewController *loadingViewController;
|
@property (weak, nonatomic, nullable) MFLoadingViewController *loadingViewController;
|
||||||
|
|
||||||
/// Tracks the current page type the user is currently viewing. KVO compliant.
|
/// Tracks the current page type the user is currently viewing. KVO compliant.
|
||||||
|
|||||||
@ -6,6 +6,7 @@
|
|||||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||||
//
|
//
|
||||||
#import <UIKit/UIKit.h>
|
#import <UIKit/UIKit.h>
|
||||||
|
#import <MVMCoreUI/MVMCoreUIMoleculeViewProtocol.h>
|
||||||
|
|
||||||
@protocol MoleculeDelegateProtocol <NSObject>
|
@protocol MoleculeDelegateProtocol <NSObject>
|
||||||
|
|
||||||
|
|||||||
@ -80,14 +80,13 @@ open class MoleculeListTemplate: ThreeLayerTableViewController {
|
|||||||
return UITableViewCell()
|
return UITableViewCell()
|
||||||
}
|
}
|
||||||
let delegate = delegateObject() as? MVMCoreUIDelegateObject
|
let delegate = delegateObject() as? MVMCoreUIDelegateObject
|
||||||
|
let moleculeCell = cell as? MVMCoreUIMoleculeViewProtocol
|
||||||
|
moleculeCell?.reset?()
|
||||||
if let protocolCell = cell as? MoleculeListCellProtocol {
|
if let protocolCell = cell as? MoleculeListCellProtocol {
|
||||||
protocolCell.setSeparatorWithJSON?(loadObject?.pageJSON?.optionalDictionaryForKey("separator"), delegateObject: delegate, additionalData: nil, indexPath: indexPath)
|
protocolCell.setSeparatorWithJSON?(loadObject?.pageJSON?.optionalDictionaryForKey("separator"), delegateObject: delegate, additionalData: nil, indexPath: indexPath)
|
||||||
}
|
}
|
||||||
if let protocolCell = cell as? MVMCoreUIMoleculeViewProtocol {
|
moleculeCell?.setWithJSON(moleculeInfo.molecule, delegateObject: delegate, additionalData: nil)
|
||||||
protocolCell.reset?()
|
moleculeCell?.updateView(tableView.bounds.width)
|
||||||
protocolCell.setWithJSON(moleculeInfo.molecule, delegateObject: delegate, additionalData: nil)
|
|
||||||
protocolCell.updateView(tableView.bounds.width)
|
|
||||||
}
|
|
||||||
return cell
|
return cell
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -9,7 +9,6 @@
|
|||||||
#import "MVMCoreUIUtility.h"
|
#import "MVMCoreUIUtility.h"
|
||||||
#import "MVMCoreUIConstants.h"
|
#import "MVMCoreUIConstants.h"
|
||||||
#import "MVMCoreUISession.h"
|
#import "MVMCoreUISession.h"
|
||||||
#import "MVMCoreUINavigationController.h"
|
|
||||||
#import "MVMCoreUISplitViewController.h"
|
#import "MVMCoreUISplitViewController.h"
|
||||||
@import MVMCore.MVMCoreNavigationHandler;
|
@import MVMCore.MVMCoreNavigationHandler;
|
||||||
@import MVMCore.MVMCoreGetterUtility;
|
@import MVMCore.MVMCoreGetterUtility;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user