Merge branch 'develop' into feature/swift_5
This commit is contained in:
commit
3ac816838b
@ -55,12 +55,10 @@
|
||||
D29DF15421E69760003B2FB9 /* MVMCoreUIPanelButtonProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF15321E69760003B2FB9 /* MVMCoreUIPanelButtonProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF16121E69996003B2FB9 /* MFViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF15F21E69996003B2FB9 /* MFViewController.m */; };
|
||||
D29DF16221E69996003B2FB9 /* MFViewController.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16021E69996003B2FB9 /* MFViewController.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17321E69E1F003B2FB9 /* MFCaretButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16921E69E1F003B2FB9 /* MFCaretButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17421E69E1F003B2FB9 /* MFCustomButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16A21E69E1F003B2FB9 /* MFCustomButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17521E69E1F003B2FB9 /* ButtonDelegateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16B21E69E1F003B2FB9 /* ButtonDelegateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17621E69E1F003B2FB9 /* PrimaryButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16C21E69E1F003B2FB9 /* PrimaryButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17721E69E1F003B2FB9 /* MFTextButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF16D21E69E1F003B2FB9 /* MFTextButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF17821E69E1F003B2FB9 /* MFCaretButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF16E21E69E1F003B2FB9 /* MFCaretButton.m */; };
|
||||
D29DF17A21E69E1F003B2FB9 /* MFCustomButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF17021E69E1F003B2FB9 /* MFCustomButton.m */; };
|
||||
D29DF17B21E69E1F003B2FB9 /* PrimaryButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF17121E69E1F003B2FB9 /* PrimaryButton.m */; };
|
||||
D29DF17C21E69E1F003B2FB9 /* MFTextButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF17221E69E1F003B2FB9 /* MFTextButton.m */; };
|
||||
@ -80,8 +78,6 @@
|
||||
D29DF25621E6A177003B2FB9 /* MFTextFieldSubclassExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF24B21E6A177003B2FB9 /* MFTextFieldSubclassExtension.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF25721E6A177003B2FB9 /* MFTextField.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF24C21E6A177003B2FB9 /* MFTextField.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF25921E6A22D003B2FB9 /* MFButtonProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF25821E6A22D003B2FB9 /* MFButtonProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF25C21E6A2B6003B2FB9 /* DashLine.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF25A21E6A2B6003B2FB9 /* DashLine.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF25D21E6A2B6003B2FB9 /* DashLine.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF25B21E6A2B6003B2FB9 /* DashLine.m */; };
|
||||
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF26821E6AA0B003B2FB9 /* FLAnimatedImage.m */; };
|
||||
D29DF26D21E6AA0B003B2FB9 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF26921E6AA0B003B2FB9 /* FLAnimatedImageView.m */; };
|
||||
D29DF26E21E6AA0B003B2FB9 /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF26A21E6AA0B003B2FB9 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
@ -109,8 +105,6 @@
|
||||
D29DF29E21E7AE3B003B2FB9 /* MFStyler.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF13921E68637003B2FB9 /* MFStyler.m */; };
|
||||
D29DF2A121E7AF4E003B2FB9 /* MVMCoreUIUtility.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF29F21E7AF4E003B2FB9 /* MVMCoreUIUtility.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF2A221E7AF4E003B2FB9 /* MVMCoreUIUtility.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF2A021E7AF4E003B2FB9 /* MVMCoreUIUtility.m */; };
|
||||
D29DF2A521E7B2A0003B2FB9 /* MFCaretView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF2A321E7B29F003B2FB9 /* MFCaretView.m */; };
|
||||
D29DF2A621E7B2A0003B2FB9 /* MFCaretView.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF2A421E7B2A0003B2FB9 /* MFCaretView.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF2A921E7B2F9003B2FB9 /* MVMCoreUIConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D29DF2AA21E7B2F9003B2FB9 /* MVMCoreUIConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF2A821E7B2F9003B2FB9 /* MVMCoreUIConstants.m */; };
|
||||
D29DF2AE21E7B3A4003B2FB9 /* MFTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = D29DF2AB21E7B3A4003B2FB9 /* MFTextView.m */; };
|
||||
@ -158,6 +152,9 @@
|
||||
D2C5001921F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */; };
|
||||
D2C5001D21F8EE67001DA659 /* LabelWithInternalButton.h in Headers */ = {isa = PBXBuildFile; fileRef = D2C5001B21F8EE66001DA659 /* LabelWithInternalButton.h */; settings = {ATTRIBUTES = (Public, ); }; };
|
||||
D2C5001E21F8EE67001DA659 /* LabelWithInternalButton.m in Sources */ = {isa = PBXBuildFile; fileRef = D2C5001C21F8EE66001DA659 /* LabelWithInternalButton.m */; };
|
||||
DBC4391822442197001AB423 /* CaretView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC4391622442196001AB423 /* CaretView.swift */; };
|
||||
DBC4391922442197001AB423 /* DashLine.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC4391722442197001AB423 /* DashLine.swift */; };
|
||||
DBC4391B224421A0001AB423 /* CaretButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBC4391A224421A0001AB423 /* CaretButton.swift */; };
|
||||
/* End PBXBuildFile section */
|
||||
|
||||
/* Begin PBXFileReference section */
|
||||
@ -221,12 +218,10 @@
|
||||
D29DF15A21E697DA003B2FB9 /* SeparatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = SeparatorView.m; sourceTree = "<group>"; };
|
||||
D29DF15F21E69996003B2FB9 /* MFViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFViewController.m; sourceTree = "<group>"; };
|
||||
D29DF16021E69996003B2FB9 /* MFViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFViewController.h; sourceTree = "<group>"; };
|
||||
D29DF16921E69E1F003B2FB9 /* MFCaretButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFCaretButton.h; sourceTree = "<group>"; };
|
||||
D29DF16A21E69E1F003B2FB9 /* MFCustomButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFCustomButton.h; sourceTree = "<group>"; };
|
||||
D29DF16B21E69E1F003B2FB9 /* ButtonDelegateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonDelegateProtocol.h; sourceTree = "<group>"; };
|
||||
D29DF16C21E69E1F003B2FB9 /* PrimaryButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PrimaryButton.h; sourceTree = "<group>"; };
|
||||
D29DF16D21E69E1F003B2FB9 /* MFTextButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextButton.h; sourceTree = "<group>"; };
|
||||
D29DF16E21E69E1F003B2FB9 /* MFCaretButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFCaretButton.m; sourceTree = "<group>"; };
|
||||
D29DF17021E69E1F003B2FB9 /* MFCustomButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFCustomButton.m; sourceTree = "<group>"; };
|
||||
D29DF17121E69E1F003B2FB9 /* PrimaryButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PrimaryButton.m; sourceTree = "<group>"; };
|
||||
D29DF17221E69E1F003B2FB9 /* MFTextButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFTextButton.m; sourceTree = "<group>"; };
|
||||
@ -244,8 +239,6 @@
|
||||
D29DF24B21E6A177003B2FB9 /* MFTextFieldSubclassExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextFieldSubclassExtension.h; sourceTree = "<group>"; };
|
||||
D29DF24C21E6A177003B2FB9 /* MFTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFTextField.h; sourceTree = "<group>"; };
|
||||
D29DF25821E6A22D003B2FB9 /* MFButtonProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFButtonProtocol.h; sourceTree = "<group>"; };
|
||||
D29DF25A21E6A2B6003B2FB9 /* DashLine.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DashLine.h; sourceTree = "<group>"; };
|
||||
D29DF25B21E6A2B6003B2FB9 /* DashLine.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DashLine.m; sourceTree = "<group>"; };
|
||||
D29DF26821E6AA0B003B2FB9 /* FLAnimatedImage.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImage.m; sourceTree = "<group>"; };
|
||||
D29DF26921E6AA0B003B2FB9 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FLAnimatedImageView.m; sourceTree = "<group>"; };
|
||||
D29DF26A21E6AA0B003B2FB9 /* FLAnimatedImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FLAnimatedImage.h; sourceTree = "<group>"; };
|
||||
@ -271,8 +264,6 @@
|
||||
D29DF29421E7ADB8003B2FB9 /* MFProgrammaticTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFProgrammaticTableViewController.m; sourceTree = "<group>"; };
|
||||
D29DF29F21E7AF4E003B2FB9 /* MVMCoreUIUtility.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIUtility.h; sourceTree = "<group>"; };
|
||||
D29DF2A021E7AF4E003B2FB9 /* MVMCoreUIUtility.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIUtility.m; sourceTree = "<group>"; };
|
||||
D29DF2A321E7B29F003B2FB9 /* MFCaretView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFCaretView.m; sourceTree = "<group>"; };
|
||||
D29DF2A421E7B2A0003B2FB9 /* MFCaretView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MFCaretView.h; sourceTree = "<group>"; };
|
||||
D29DF2A721E7B2F9003B2FB9 /* MVMCoreUIConstants.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MVMCoreUIConstants.h; sourceTree = "<group>"; };
|
||||
D29DF2A821E7B2F9003B2FB9 /* MVMCoreUIConstants.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIConstants.m; sourceTree = "<group>"; };
|
||||
D29DF2AB21E7B3A4003B2FB9 /* MFTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MFTextView.m; sourceTree = "<group>"; };
|
||||
@ -316,6 +307,9 @@
|
||||
D2C5001721F8ECDD001DA659 /* MVMCoreUIViewControllerMappingObject.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MVMCoreUIViewControllerMappingObject.m; sourceTree = "<group>"; };
|
||||
D2C5001B21F8EE66001DA659 /* LabelWithInternalButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LabelWithInternalButton.h; sourceTree = "<group>"; };
|
||||
D2C5001C21F8EE66001DA659 /* LabelWithInternalButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LabelWithInternalButton.m; sourceTree = "<group>"; };
|
||||
DBC4391622442196001AB423 /* CaretView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretView.swift; sourceTree = "<group>"; };
|
||||
DBC4391722442197001AB423 /* DashLine.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DashLine.swift; sourceTree = "<group>"; };
|
||||
DBC4391A224421A0001AB423 /* CaretButton.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CaretButton.swift; sourceTree = "<group>"; };
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@ -525,6 +519,7 @@
|
||||
D29DF16821E69E1F003B2FB9 /* Buttons */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DBC4391A224421A0001AB423 /* CaretButton.swift */,
|
||||
D29DF25821E6A22D003B2FB9 /* MFButtonProtocol.h */,
|
||||
D29DF16B21E69E1F003B2FB9 /* ButtonDelegateProtocol.h */,
|
||||
D29DF16A21E69E1F003B2FB9 /* MFCustomButton.h */,
|
||||
@ -533,8 +528,6 @@
|
||||
D29DF17121E69E1F003B2FB9 /* PrimaryButton.m */,
|
||||
D29DF16D21E69E1F003B2FB9 /* MFTextButton.h */,
|
||||
D29DF17221E69E1F003B2FB9 /* MFTextButton.m */,
|
||||
D29DF16921E69E1F003B2FB9 /* MFCaretButton.h */,
|
||||
D29DF16E21E69E1F003B2FB9 /* MFCaretButton.m */,
|
||||
);
|
||||
path = Buttons;
|
||||
sourceTree = "<group>";
|
||||
@ -542,6 +535,8 @@
|
||||
D29DF17D21E69E26003B2FB9 /* Views */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
DBC4391622442196001AB423 /* CaretView.swift */,
|
||||
DBC4391722442197001AB423 /* DashLine.swift */,
|
||||
D29DF17E21E69E2E003B2FB9 /* MFView.h */,
|
||||
D29DF17F21E69E2E003B2FB9 /* MFView.m */,
|
||||
D29DF28521E7AC2B003B2FB9 /* MFLabel.h */,
|
||||
@ -559,10 +554,6 @@
|
||||
D29DF2AC21E7B3A4003B2FB9 /* MFTextView.xib */,
|
||||
D29DF15921E697DA003B2FB9 /* SeparatorView.h */,
|
||||
D29DF15A21E697DA003B2FB9 /* SeparatorView.m */,
|
||||
D29DF25A21E6A2B6003B2FB9 /* DashLine.h */,
|
||||
D29DF25B21E6A2B6003B2FB9 /* DashLine.m */,
|
||||
D29DF2A421E7B2A0003B2FB9 /* MFCaretView.h */,
|
||||
D29DF2A321E7B29F003B2FB9 /* MFCaretView.m */,
|
||||
D29DF2B121E7B76C003B2FB9 /* MFLoadingSpinner.h */,
|
||||
D29DF2B221E7B76D003B2FB9 /* MFLoadingSpinner.m */,
|
||||
D29DF32321ED0DA2003B2FB9 /* TextButtonView.h */,
|
||||
@ -699,7 +690,6 @@
|
||||
files = (
|
||||
D29DF18021E69E49003B2FB9 /* MFView.h in Headers */,
|
||||
D29DF27921E7A533003B2FB9 /* MVMCoreUISession.h in Headers */,
|
||||
D29DF25C21E6A2B6003B2FB9 /* DashLine.h in Headers */,
|
||||
D206997721FB8A0B00CAE0DE /* MVMCoreUINavigationController.h in Headers */,
|
||||
D29DF29D21E7AE38003B2FB9 /* MFStyler.h in Headers */,
|
||||
D29DF2B021E7B3A4003B2FB9 /* MFTextView.h in Headers */,
|
||||
@ -735,8 +725,6 @@
|
||||
D29DF17521E69E1F003B2FB9 /* ButtonDelegateProtocol.h in Headers */,
|
||||
D29DF18221E69E54003B2FB9 /* SeparatorView.h in Headers */,
|
||||
D29DF26E21E6AA0B003B2FB9 /* FLAnimatedImage.h in Headers */,
|
||||
D29DF17321E69E1F003B2FB9 /* MFCaretButton.h in Headers */,
|
||||
D29DF2A621E7B2A0003B2FB9 /* MFCaretView.h in Headers */,
|
||||
D2C5001D21F8EE67001DA659 /* LabelWithInternalButton.h in Headers */,
|
||||
D29DF11621E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.h in Headers */,
|
||||
D29DF17721E69E1F003B2FB9 /* MFTextButton.h in Headers */,
|
||||
@ -848,7 +836,9 @@
|
||||
buildActionMask = 2147483647;
|
||||
files = (
|
||||
D29DF32121ED0CBA003B2FB9 /* LabelView.m in Sources */,
|
||||
DBC4391822442197001AB423 /* CaretView.swift in Sources */,
|
||||
D29770F221F7C6D600B2F0D0 /* TopLabelsAndBottomButtonsTableViewController.m in Sources */,
|
||||
DBC4391922442197001AB423 /* DashLine.swift in Sources */,
|
||||
D29DF29621E7ADB8003B2FB9 /* StackableViewController.m in Sources */,
|
||||
D22D1F1F220343560077CEC0 /* MVMCoreUICheckMarkView.m in Sources */,
|
||||
D282AAB4223FDDAE00C46919 /* MFLoadImageView.swift in Sources */,
|
||||
@ -890,8 +880,6 @@
|
||||
D2A5146B2214905000345BFB /* ThreeLayerViewController.swift in Sources */,
|
||||
D29DF2C921E7BFC6003B2FB9 /* MFSizeObject.m in Sources */,
|
||||
D29DF2C721E7BF57003B2FB9 /* MFTabBarInteractor.m in Sources */,
|
||||
D29DF2A521E7B2A0003B2FB9 /* MFCaretView.m in Sources */,
|
||||
D29DF25D21E6A2B6003B2FB9 /* DashLine.m in Sources */,
|
||||
D29DF29521E7ADB8003B2FB9 /* ProgrammaticScrollViewController.m in Sources */,
|
||||
D29DF16121E69996003B2FB9 /* MFViewController.m in Sources */,
|
||||
D22D1F47220496A30077CEC0 /* MVMCoreUISwitch.m in Sources */,
|
||||
@ -903,11 +891,11 @@
|
||||
D20A9A5E2243D3E300ADE781 /* TwoButtonView.swift in Sources */,
|
||||
D29DF2AA21E7B2F9003B2FB9 /* MVMCoreUIConstants.m in Sources */,
|
||||
D2A5146122121FBF00345BFB /* MoleculeStackTemplate.swift in Sources */,
|
||||
D29DF17821E69E1F003B2FB9 /* MFCaretButton.m in Sources */,
|
||||
D29DF11821E6805F003B2FB9 /* NSLayoutConstraint+MFConvenience.m in Sources */,
|
||||
D29DF26C21E6AA0B003B2FB9 /* FLAnimatedImage.m in Sources */,
|
||||
D29770FC21F7C77400B2F0D0 /* MVMCoreUITextFieldView.m in Sources */,
|
||||
D29DF25121E6A177003B2FB9 /* MFDigitTextBox.m in Sources */,
|
||||
DBC4391B224421A0001AB423 /* CaretButton.swift in Sources */,
|
||||
D29DF13221E6851E003B2FB9 /* MVMCoreUITopAlertBaseView.m in Sources */,
|
||||
D2C5001E21F8EE67001DA659 /* LabelWithInternalButton.m in Sources */,
|
||||
D29DF29C21E7ADB9003B2FB9 /* MFProgrammaticTableViewController.m in Sources */,
|
||||
|
||||
132
MVMCoreUI/Atoms/Buttons/CaretButton.swift
Normal file
132
MVMCoreUI/Atoms/Buttons/CaretButton.swift
Normal file
@ -0,0 +1,132 @@
|
||||
//
|
||||
// CaretButton.swift
|
||||
// MVMCoreUI
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Created by Christiano, Kevin on 3/18/19.
|
||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
open class CaretButton: MFCustomButton {
|
||||
//------------------------------------------------------
|
||||
// MARK: - Constants
|
||||
//------------------------------------------------------
|
||||
|
||||
private let CaretViewHeight: Float = 10.8
|
||||
private let CaretViewWidth: Float = 6.6
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//------------------------------------------------------
|
||||
|
||||
@objc public var rightView: UIView?
|
||||
@objc public var rightViewHeight: NSNumber?
|
||||
@objc public var rightViewWidth: NSNumber?
|
||||
|
||||
@objc public var enabledColor: UIColor = .black {
|
||||
didSet {
|
||||
setTitleColor(enabledColor, for: .normal)
|
||||
changeCaretColor()
|
||||
}
|
||||
}
|
||||
|
||||
@objc public var disabledColor: UIColor = .mfSilver() {
|
||||
didSet {
|
||||
setTitleColor(disabledColor, for: .disabled)
|
||||
changeCaretColor()
|
||||
}
|
||||
}
|
||||
|
||||
private var caretSpacingConstraint: NSLayoutConstraint?
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Lifecycle
|
||||
//------------------------------------------------------
|
||||
|
||||
override open func layoutSubviews() {
|
||||
|
||||
addCaretImageView()
|
||||
super.layoutSubviews()
|
||||
}
|
||||
|
||||
public func setEnabled(_ enabled: Bool) {
|
||||
super.isEnabled = enabled
|
||||
|
||||
changeCaretColor()
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Functions
|
||||
//------------------------------------------------------
|
||||
|
||||
private func changeCaretColor() {
|
||||
|
||||
if let rightCaretView = rightView as? CaretView {
|
||||
rightCaretView.tintColor = isEnabled ? enabledColor : disabledColor
|
||||
}
|
||||
}
|
||||
|
||||
private func addCaretImageView() {
|
||||
|
||||
rightView?.removeFromSuperview()
|
||||
|
||||
let width = CGFloat(rightViewWidth?.floatValue ?? CaretViewWidth)
|
||||
let height = CGFloat(rightViewHeight?.floatValue ?? CaretViewHeight)
|
||||
|
||||
let edgeInsets: UIEdgeInsets = contentEdgeInsets
|
||||
contentEdgeInsets = UIEdgeInsets(top: edgeInsets.top, left: edgeInsets.left, bottom: edgeInsets.bottom, right: 4 + width)
|
||||
|
||||
let caretView: UIView = rightView ?? CaretView()
|
||||
rightView = caretView
|
||||
rightView?.translatesAutoresizingMaskIntoConstraints = false
|
||||
addSubview(caretView)
|
||||
|
||||
NSLayoutConstraint(item: caretView, attribute: .width, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: width).isActive = true
|
||||
NSLayoutConstraint(item: caretView, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: height).isActive = true
|
||||
|
||||
let caretLabelSpacing = NSLayoutConstraint(item: caretView, attribute: .left, relatedBy: .equal, toItem: titleLabel, attribute: .right, multiplier: 1.0, constant: 4.0)
|
||||
caretLabelSpacing.isActive = true
|
||||
caretSpacingConstraint = caretLabelSpacing
|
||||
|
||||
NSLayoutConstraint(item: caretView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1.0, constant: 0).isActive = true
|
||||
NSLayoutConstraint(item: self, attribute: .right, relatedBy: .greaterThanOrEqual, toItem: caretView, attribute: .right, multiplier: 1.0, constant: 0).isActive = true
|
||||
contentHorizontalAlignment = .left
|
||||
//set correct color after layout
|
||||
changeCaretColor()
|
||||
}
|
||||
|
||||
public func updateCaretSpacing(_ spacing: CGFloat) {
|
||||
|
||||
caretSpacingConstraint?.constant = spacing
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Atomization
|
||||
//------------------------------------------------------
|
||||
|
||||
// Default values for view.
|
||||
@objc open override func setAsMolecule() {
|
||||
|
||||
backgroundColor = .clear
|
||||
}
|
||||
|
||||
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) {
|
||||
super.setWithJSON(json, delegate: delegate, additionalData: additionalData)
|
||||
|
||||
// Configure class properties with JSON values
|
||||
guard let jsonDictionary = json else { return }
|
||||
|
||||
if let backgroundColorHex = jsonDictionary[KeyBackgroundColor] as? String {
|
||||
backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
||||
}
|
||||
|
||||
if let enableColorHex = jsonDictionary["enableColor"] as? String {
|
||||
enabledColor = UIColor.mfGet(forHex: enableColorHex)
|
||||
}
|
||||
|
||||
if let disabledColorHex = jsonDictionary["disabledColor"] as? String {
|
||||
disabledColor = UIColor.mfGet(forHex: disabledColorHex)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,25 +0,0 @@
|
||||
//
|
||||
// MFCaretButton.h
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Copyright © 2018 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <MVMCoreUI/MFCustomButton.h>
|
||||
@interface MFCaretButton : MFCustomButton
|
||||
|
||||
@property (nullable, nonatomic, strong) UIView *rightView;
|
||||
@property (nullable, nonatomic, strong) NSNumber *rightViewHeight;
|
||||
@property (nullable, nonatomic, strong) NSNumber *rightViewWidth;
|
||||
|
||||
-(void)updateCaretSpacing:(CGFloat)spacing;
|
||||
|
||||
/* The fill color of the Caret and titleLabel. The default is blackColor */
|
||||
-(void)setEnableCaretColor:(nullable UIColor *)enableCaretColor;
|
||||
|
||||
/* The fill color of the Caret and titleLabel. The default is mfSilver */
|
||||
-(void)setDisabledCaretColor:(nullable UIColor *)disabledCaretColor;
|
||||
|
||||
@end
|
||||
@ -1,113 +0,0 @@
|
||||
//
|
||||
// MFCaretButton.m
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Copyright © 2018 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MFCaretButton.h"
|
||||
#import "MFCaretView.h"
|
||||
#import "UIColor+MFConvenience.h"
|
||||
|
||||
@interface MFCaretButton ()
|
||||
|
||||
@property (nonatomic, strong) UIColor *enableColor;
|
||||
@property (nonatomic, strong) UIColor *disabledColor;
|
||||
@property (nonatomic, strong) NSLayoutConstraint *caretSpacingConstraint;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MFCaretButton
|
||||
|
||||
CGFloat const CaretViewHeight = 10.8f;
|
||||
CGFloat const CaretViewWidth = 6.6f;
|
||||
|
||||
|
||||
- (void)layoutSubviews {
|
||||
[self addCaretImageView];
|
||||
[super layoutSubviews];
|
||||
}
|
||||
|
||||
- (void)setEnabled:(BOOL)enabled {
|
||||
[super setEnabled:enabled];
|
||||
[self changeCaretColor];
|
||||
}
|
||||
- (void)changeCaretColor {
|
||||
[self setTitleColor:self.enableColor forState:UIControlStateNormal];
|
||||
[self setTitleColor:self.disabledColor forState:UIControlStateDisabled];
|
||||
if ([self.rightView isKindOfClass:[MFCaretView class]]) {
|
||||
MFCaretView *caretView = (MFCaretView *)self.rightView;
|
||||
if (self.enabled) {
|
||||
[caretView setLineColor:self.enableColor];
|
||||
} else {
|
||||
[caretView setLineColor:self.disabledColor];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
- (void)addCaretImageView {
|
||||
[self.rightView removeFromSuperview];
|
||||
UIEdgeInsets edgeInsets = self.contentEdgeInsets;
|
||||
CGFloat rightInset = self.rightViewWidth?self.rightViewWidth.floatValue:CaretViewWidth;
|
||||
UIEdgeInsets newInsets = UIEdgeInsetsMake(edgeInsets.top, edgeInsets.left, edgeInsets.bottom, 4 + rightInset);
|
||||
self.contentEdgeInsets = newInsets;
|
||||
UIView *caretViewIs = self.rightView;
|
||||
if (!self.rightView) {
|
||||
caretViewIs = [[MFCaretView alloc]init];
|
||||
self.rightView = caretViewIs;
|
||||
}
|
||||
self.rightView.translatesAutoresizingMaskIntoConstraints = NO;
|
||||
[self addSubview:self.rightView];
|
||||
|
||||
CGFloat width = self.rightViewWidth?self.rightViewWidth.floatValue:CaretViewWidth;
|
||||
NSLayoutConstraint *caretViewWidthConstraint = [NSLayoutConstraint constraintWithItem:caretViewIs attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:width];
|
||||
caretViewWidthConstraint.active = YES;
|
||||
|
||||
CGFloat height = self.rightViewHeight?self.rightViewHeight.floatValue:CaretViewHeight;
|
||||
NSLayoutConstraint *caretViewHeightConstraint = [NSLayoutConstraint constraintWithItem:caretViewIs attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:height];
|
||||
caretViewHeightConstraint.active = YES;
|
||||
|
||||
NSLayoutConstraint *caretLabelSpacing = [NSLayoutConstraint constraintWithItem:caretViewIs attribute:NSLayoutAttributeLeft relatedBy:NSLayoutRelationEqual toItem:self.titleLabel attribute:NSLayoutAttributeRight multiplier:1.0 constant:4.0];
|
||||
caretLabelSpacing.active = YES;
|
||||
self.caretSpacingConstraint = caretLabelSpacing;
|
||||
|
||||
NSLayoutConstraint *caretCenterY = [NSLayoutConstraint constraintWithItem:caretViewIs attribute:NSLayoutAttributeCenterY relatedBy:NSLayoutRelationEqual toItem:self attribute:NSLayoutAttributeCenterY multiplier:1.0 constant:0];
|
||||
caretCenterY.active = YES;
|
||||
|
||||
NSLayoutConstraint *caretLabelRightPin = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:caretViewIs attribute:NSLayoutAttributeRight multiplier:1.0 constant:0];
|
||||
caretLabelRightPin.active = YES;
|
||||
self.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
|
||||
//set correct color after layout
|
||||
[self changeCaretColor];
|
||||
}
|
||||
- (void)updateCaretSpacing:(CGFloat)spacing {
|
||||
if (self.caretSpacingConstraint != nil) {
|
||||
self.caretSpacingConstraint.constant = spacing;
|
||||
}
|
||||
}
|
||||
- (void)setEnableCaretColor:(UIColor *)enableCaretColor {
|
||||
self.enableColor = enableCaretColor;
|
||||
[self changeCaretColor];
|
||||
}
|
||||
- (void)setDisabledCaretColor:(UIColor *)disabledCaretColor {
|
||||
self.disabledColor = disabledCaretColor;
|
||||
[self changeCaretColor];
|
||||
}
|
||||
@synthesize enableColor = _enableColor;
|
||||
- (UIColor *)enableColor {
|
||||
if (!_enableColor) {
|
||||
_enableColor = [UIColor blackColor];
|
||||
}
|
||||
return _enableColor;
|
||||
}
|
||||
|
||||
@synthesize disabledColor = _disabledColor;
|
||||
- (UIColor *)disabledColor {
|
||||
if (!_disabledColor) {
|
||||
_disabledColor = [UIColor mfSilver];
|
||||
}
|
||||
return _disabledColor;
|
||||
}
|
||||
|
||||
@end
|
||||
@ -10,13 +10,15 @@
|
||||
@import MVMCore.MVMCoreActionDelegateProtocol;
|
||||
#import <MVMCoreUI/ButtonDelegateProtocol.h>
|
||||
#import <MVMCoreUI/MFButtonProtocol.h>
|
||||
#import <MVMCoreUI/MVMCoreUIMoleculeViewProtocol.h>
|
||||
@import MVMCore.MVMCoreViewProtocol;
|
||||
|
||||
typedef void (^ButtonTapBlock)(id _Nonnull sender);
|
||||
|
||||
extern CGFloat const CloseButtonHeight;
|
||||
extern CGFloat const CloseButtonWidth;
|
||||
|
||||
@interface MFCustomButton : UIButton <MFButtonProtocol>
|
||||
@interface MFCustomButton : UIButton <MFButtonProtocol, MVMCoreUIMoleculeViewProtocol>
|
||||
|
||||
@property (nullable, nonatomic, strong) NSDictionary *actionMap;
|
||||
@property (nullable, nonatomic, weak) id <ButtonDelegateProtocol> buttonDelegate;
|
||||
@ -35,4 +37,5 @@ extern CGFloat const CloseButtonWidth;
|
||||
- (void)addAccessibilityForCameraControl;
|
||||
|
||||
- (nonnull UIAccessibilityCustomAction *)accessibilityCustomAction;
|
||||
|
||||
@end
|
||||
|
||||
@ -7,7 +7,7 @@
|
||||
//
|
||||
|
||||
#import "MFTextField.h"
|
||||
#import "DashLine.h"
|
||||
#import <MVMCoreUI/MVMCoreUI-Swift.h>
|
||||
#import "MFTextFieldSubclassExtension.h"
|
||||
#import "MFStyler.h"
|
||||
#import "UIColor+MFConvenience.h"
|
||||
|
||||
@ -1,18 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="13771" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES">
|
||||
<device id="retina4_7" orientation="portrait">
|
||||
<adaptation id="fullscreen"/>
|
||||
</device>
|
||||
<dependencies>
|
||||
<deployment identifier="iOS"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13772"/>
|
||||
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
|
||||
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
|
||||
</dependencies>
|
||||
<customFonts key="customFonts">
|
||||
<array key="HelveticaNeue.ttc">
|
||||
<string>HelveticaNeue</string>
|
||||
</array>
|
||||
</customFonts>
|
||||
<objects>
|
||||
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner" customClass="MFTextField">
|
||||
<connections>
|
||||
@ -62,7 +57,7 @@
|
||||
<constraint firstAttribute="height" constant="1" id="f1r-3b-nqr"/>
|
||||
</constraints>
|
||||
</view>
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hw1-Eo-Szn" customClass="DashLine">
|
||||
<view hidden="YES" contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="hw1-Eo-Szn" customClass="DashLine" customModule="MVMCoreUI" customModuleProvider="target">
|
||||
<rect key="frame" x="320" y="43" width="0.0" height="1"/>
|
||||
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
|
||||
</view>
|
||||
|
||||
124
MVMCoreUI/Atoms/Views/CaretView.swift
Normal file
124
MVMCoreUI/Atoms/Views/CaretView.swift
Normal file
@ -0,0 +1,124 @@
|
||||
//
|
||||
// CaretView.swift
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Converted by Christiano, Kevin on 1/5/18.
|
||||
// Copyright © 2018 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
|
||||
open class CaretView: MFView {
|
||||
//------------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//------------------------------------------------------
|
||||
|
||||
private(set) var strokeColor: UIColor?
|
||||
private var lineWidth: CGFloat?
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Initialization
|
||||
//------------------------------------------------------
|
||||
|
||||
@objc public init() {
|
||||
super.init(frame: CGRect.zero)
|
||||
}
|
||||
|
||||
@objc public override init(frame: CGRect) {
|
||||
super.init(frame: frame)
|
||||
}
|
||||
|
||||
@objc required public init?(coder aDecoder: NSCoder) {
|
||||
super.init(coder: aDecoder)
|
||||
}
|
||||
|
||||
@objc public init(lineWidth: CGFloat) {
|
||||
super.init(frame: CGRect())
|
||||
|
||||
self.lineWidth = lineWidth
|
||||
}
|
||||
|
||||
@objc override open func setupView() {
|
||||
|
||||
defaultState()
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Private Function
|
||||
//------------------------------------------------------
|
||||
|
||||
private func defaultState() {
|
||||
|
||||
isOpaque = false
|
||||
isHidden = false
|
||||
backgroundColor = .clear
|
||||
strokeColor = .black
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Drawing
|
||||
//------------------------------------------------------
|
||||
|
||||
@objc override open func draw(_ rect: CGRect) {
|
||||
// Drawing Caret
|
||||
let context = UIGraphicsGetCurrentContext()
|
||||
context?.clear(rect)
|
||||
|
||||
let lineWidthToDraw: CGFloat = lineWidth ?? frame.size.width / 2.6
|
||||
|
||||
let path = UIBezierPath()
|
||||
path.move(to: CGPoint(x: lineWidthToDraw / 2.0, y: 0.0))
|
||||
path.addLine(to: CGPoint(x: frame.size.width, y: frame.size.height / 2.0))
|
||||
path.addLine(to: CGPoint(x: lineWidthToDraw / 2.0, y: frame.size.height))
|
||||
path.addLine(to: CGPoint(x: 0.0, y: frame.size.height - lineWidthToDraw / 2.0))
|
||||
path.addLine(to: CGPoint(x: frame.size.width - lineWidthToDraw, y: frame.size.height / 2.0))
|
||||
path.addLine(to: CGPoint(x: 0.0, y: lineWidthToDraw / 2.0))
|
||||
path.addLine(to: CGPoint(x: lineWidthToDraw / 2.0, y: 0.0))
|
||||
strokeColor?.setFill()
|
||||
path.fill()
|
||||
path.close()
|
||||
}
|
||||
|
||||
@objc public func setLineColor(_ color: UIColor?) {
|
||||
|
||||
strokeColor = color
|
||||
setNeedsDisplay()
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Atomization
|
||||
//------------------------------------------------------
|
||||
|
||||
// Default values for view.
|
||||
@objc open override func setAsMolecule() {
|
||||
|
||||
defaultState()
|
||||
}
|
||||
|
||||
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) {
|
||||
super.setWithJSON(json, delegate: delegate, additionalData: additionalData)
|
||||
|
||||
// Configure class properties with JSON values
|
||||
guard let jsonDictionary = json else { return }
|
||||
|
||||
if let backgroundColorHex = jsonDictionary[KeyBackgroundColor] as? String {
|
||||
backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
||||
}
|
||||
|
||||
if let strokeColorHex = jsonDictionary["strokeColor"] as? String {
|
||||
strokeColor = UIColor.mfGet(forHex: strokeColorHex)
|
||||
}
|
||||
|
||||
if let isHiddenValue = jsonDictionary[KeyIsHidden] as? Bool {
|
||||
isHidden = isHiddenValue
|
||||
}
|
||||
|
||||
if let isOpaqueValue = jsonDictionary[KeyIsOpaque] as? Bool {
|
||||
isOpaque = isOpaqueValue
|
||||
}
|
||||
|
||||
if let lineWidthValue = jsonDictionary["lineWidth"] as? CGFloat {
|
||||
lineWidth = lineWidthValue
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,17 +0,0 @@
|
||||
//
|
||||
// DashLine.h
|
||||
// mobilefirst
|
||||
//
|
||||
// Created by Chris Yang on 2/11/16.
|
||||
// Copyright © 2016 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
#import <MVMCoreUI/MFView.h>
|
||||
|
||||
@interface DashLine : MFView
|
||||
|
||||
@property (nonatomic, strong) UIColor *bgColor;
|
||||
@property (nonatomic, strong) UIColor *dashColor;
|
||||
|
||||
@end
|
||||
@ -1,46 +0,0 @@
|
||||
//
|
||||
// DashLine.m
|
||||
// mobilefirst
|
||||
//
|
||||
// Created by Chris Yang on 2/11/16.
|
||||
// Copyright © 2016 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import "DashLine.h"
|
||||
#import "UIColor+MFConvenience.h"
|
||||
@import MVMCore.MVMCoreDispatchUtility;
|
||||
|
||||
@implementation DashLine
|
||||
|
||||
- (void)updateView:(CGFloat)size {
|
||||
[MVMCoreDispatchUtility performBlockOnMainThread:^{
|
||||
[self setNeedsDisplay];
|
||||
}];
|
||||
}
|
||||
|
||||
- (void)drawRect:(CGRect)rect {
|
||||
CAShapeLayer *dashLayer = [[CAShapeLayer alloc]init];
|
||||
dashLayer.backgroundColor = [UIColor clearColor].CGColor;
|
||||
dashLayer.frame = self.bounds;
|
||||
for (CAShapeLayer *sublayer in self.layer.sublayers) {
|
||||
[sublayer removeFromSuperlayer];
|
||||
}
|
||||
[self.layer addSublayer:dashLayer];
|
||||
|
||||
UIBezierPath *path = [[UIBezierPath alloc]init];
|
||||
[path moveToPoint:CGPointMake(dashLayer.frame.origin.x, dashLayer.frame.size.height/2.f)]; //add yourStartPoint here
|
||||
[path addLineToPoint:CGPointMake(dashLayer.frame.size.width, 0)];
|
||||
[path stroke];
|
||||
|
||||
dashLayer.strokeStart = 0.0;
|
||||
dashLayer.lineWidth = 1;
|
||||
dashLayer.lineJoin = kCALineJoinMiter;
|
||||
dashLayer.lineCap = kCALineCapRound;
|
||||
dashLayer.lineDashPattern = [NSArray arrayWithObjects:[NSNumber numberWithInt:2],[NSNumber numberWithInt:2], nil];
|
||||
dashLayer.path = path.CGPath;
|
||||
dashLayer.strokeColor = self.dashColor.CGColor ?: [UIColor mfLighterGrayColor].CGColor;
|
||||
dashLayer.fillColor = [UIColor clearColor].CGColor;
|
||||
dashLayer.backgroundColor = self.bgColor.CGColor ?: [UIColor whiteColor].CGColor;
|
||||
}
|
||||
|
||||
@end
|
||||
89
MVMCoreUI/Atoms/Views/DashLine.swift
Normal file
89
MVMCoreUI/Atoms/Views/DashLine.swift
Normal file
@ -0,0 +1,89 @@
|
||||
//
|
||||
// DashLine_Swift.swift
|
||||
// MVMCoreUI
|
||||
|
||||
// Created by Chris Yang on 2/11/16.
|
||||
// Converted by Christiano, Kevin on 3/18/19.
|
||||
// Copyright © 2019 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
import MVMCore
|
||||
|
||||
|
||||
open class DashLine: MFView {
|
||||
//------------------------------------------------------
|
||||
// MARK: - Properties
|
||||
//------------------------------------------------------
|
||||
|
||||
@objc public var dashColor: UIColor?
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Lifecycle
|
||||
//------------------------------------------------------
|
||||
|
||||
@objc override open func updateView(_ size: CGFloat) {
|
||||
MVMCoreDispatchUtility.performBlock(onMainThread: { [weak self] in
|
||||
self?.setNeedsDisplay()
|
||||
})
|
||||
}
|
||||
|
||||
@objc override open func draw(_ rect: CGRect) {
|
||||
|
||||
let dashLayer = CAShapeLayer()
|
||||
dashLayer.backgroundColor = UIColor.clear.cgColor
|
||||
dashLayer.frame = bounds
|
||||
|
||||
if let sublayers = layer.sublayers {
|
||||
for sublayer in sublayers {
|
||||
sublayer.removeFromSuperlayer()
|
||||
}
|
||||
}
|
||||
|
||||
layer.addSublayer(dashLayer)
|
||||
|
||||
let path = UIBezierPath()
|
||||
path.move(to: CGPoint(x: dashLayer.frame.origin.x, y: dashLayer.frame.size.height / 2.0)) //add yourStartPoint here
|
||||
path.addLine(to: CGPoint(x: dashLayer.frame.size.width, y: 0))
|
||||
path.stroke()
|
||||
|
||||
dashLayer.strokeStart = 0.0
|
||||
dashLayer.lineWidth = 1
|
||||
dashLayer.lineJoin = .miter
|
||||
dashLayer.lineCap = .round
|
||||
dashLayer.lineDashPattern = [NSNumber(value: 2), NSNumber(value: 2)]
|
||||
dashLayer.path = path.cgPath
|
||||
dashLayer.strokeColor = dashColor?.cgColor ?? UIColor.mfLighterGray().cgColor
|
||||
dashLayer.fillColor = UIColor.clear.cgColor
|
||||
dashLayer.backgroundColor = backgroundColor?.cgColor ?? UIColor.white.cgColor
|
||||
}
|
||||
|
||||
//------------------------------------------------------
|
||||
// MARK: - Atomization
|
||||
//------------------------------------------------------
|
||||
|
||||
// Default values for view.
|
||||
@objc open override func setAsMolecule() {
|
||||
|
||||
backgroundColor = .clear
|
||||
isHidden = false
|
||||
}
|
||||
|
||||
@objc override open func setWithJSON(_ json: [AnyHashable: Any]?, delegate: NSObject?, additionalData: [AnyHashable: Any]?) {
|
||||
super.setWithJSON(json, delegate: delegate, additionalData: additionalData)
|
||||
|
||||
// Configure class properties with JSON values
|
||||
guard let jsonDictionary = json else { return }
|
||||
|
||||
if let backgroundColorHex = jsonDictionary[KeyBackgroundColor] as? String {
|
||||
backgroundColor = UIColor.mfGet(forHex: backgroundColorHex)
|
||||
}
|
||||
|
||||
if let isHiddenValue = jsonDictionary[KeyIsHidden] as? Bool {
|
||||
isHidden = isHiddenValue
|
||||
}
|
||||
|
||||
if let dashColorHex = jsonDictionary["dashColor"] as? String {
|
||||
dashColor = UIColor.mfGet(forHex: dashColorHex)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,15 +0,0 @@
|
||||
//
|
||||
// MFCaretView.h
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Copyright © 2018 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import <UIKit/UIKit.h>
|
||||
|
||||
@interface MFCaretView : UIView
|
||||
@property (strong, nonatomic, readonly) UIColor *strokeColor;
|
||||
- (instancetype)initWithLineWidth:(CGFloat)lineWidth;
|
||||
- (void)setLineColor:(UIColor *)color;
|
||||
@end
|
||||
@ -1,93 +0,0 @@
|
||||
//
|
||||
// MFCaretView.m
|
||||
// MobileFirstFramework
|
||||
//
|
||||
// Created by Kolli, Praneeth on 1/5/18.
|
||||
// Copyright © 2018 Verizon Wireless. All rights reserved.
|
||||
//
|
||||
|
||||
#import "MFCaretView.h"
|
||||
#import "UIColor+MFConvenience.h"
|
||||
@interface MFCaretView ()
|
||||
@property (strong, nonatomic, readwrite) UIColor *strokeColor;
|
||||
@property (nonatomic) NSNumber *lineWidth;
|
||||
|
||||
@end
|
||||
|
||||
@implementation MFCaretView
|
||||
|
||||
- (instancetype)init {
|
||||
self = [super init];
|
||||
if (self) {
|
||||
// Initialization code
|
||||
self.opaque = NO;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.strokeColor = [UIColor blackColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithFrame:(CGRect)frame {
|
||||
self = [super initWithFrame:frame];
|
||||
if (self) {
|
||||
// Initialization code
|
||||
self.opaque = NO;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.strokeColor = [UIColor blackColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithCoder:(NSCoder *)aDecoder {
|
||||
self = [super initWithCoder:aDecoder];
|
||||
if (self) {
|
||||
// Initialization code
|
||||
self.opaque = NO;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.strokeColor = [UIColor blackColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (instancetype)initWithLineWidth:(CGFloat)lineWidth {
|
||||
if (self = [super init]) {
|
||||
self.opaque = NO;
|
||||
self.backgroundColor = [UIColor clearColor];
|
||||
self.lineWidth = @(lineWidth);
|
||||
self.strokeColor = [UIColor blackColor];
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
||||
- (void)drawRect:(CGRect)rect {
|
||||
// Drawing Caret
|
||||
CGContextRef context = UIGraphicsGetCurrentContext();
|
||||
CGContextClearRect(context, rect);
|
||||
|
||||
CGFloat lineWidth;
|
||||
if (self.lineWidth) {
|
||||
lineWidth = self.lineWidth.floatValue;
|
||||
} else {
|
||||
lineWidth = self.frame.size.width/2.6;
|
||||
}
|
||||
|
||||
UIBezierPath *path = [[UIBezierPath alloc] init];
|
||||
[path moveToPoint:CGPointMake(lineWidth/2.0, 0.0)];
|
||||
[path addLineToPoint:CGPointMake(self.frame.size.width, self.frame.size.height/2.0)];
|
||||
[path addLineToPoint:CGPointMake(lineWidth/2.0, self.frame.size.height)];
|
||||
[path addLineToPoint:CGPointMake(0.0, self.frame.size.height-lineWidth/2.0)];
|
||||
[path addLineToPoint:CGPointMake(self.frame.size.width-lineWidth, self.frame.size.height/2.0)];
|
||||
[path addLineToPoint:CGPointMake(0.0, lineWidth/2.0)];
|
||||
[path addLineToPoint:CGPointMake(lineWidth/2.0, 0.0)];
|
||||
[self.strokeColor setFill];
|
||||
[path fill];
|
||||
[path closePath];
|
||||
[self setBackgroundColor:[UIColor clearColor]];
|
||||
}
|
||||
|
||||
- (void)setLineColor:(UIColor *)color {
|
||||
self.strokeColor = color;
|
||||
[self setNeedsDisplay];
|
||||
}
|
||||
|
||||
@end
|
||||
@ -78,11 +78,9 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
|
||||
#import <MVMCoreUI/ViewConstrainingView.h>
|
||||
#import <MVMCoreUI/MFLoadingSpinner.h>
|
||||
#import <MVMCoreUI/MFTextView.h>
|
||||
#import <MVMCoreUI/MFCaretView.h>
|
||||
#import <MVMCoreUI/SeparatorView.h>
|
||||
#import <MVMCoreUI/LabelView.h>
|
||||
#import <MVMCoreUI/TextButtonView.h>
|
||||
#import <MVMCoreUI/DashLine.h>
|
||||
#import <MVMCoreUI/MVMCoreUITextFieldView.h>
|
||||
#import <MVMCoreUI/MVMCoreUICheckMarkView.h>
|
||||
#import <MVMCoreUI/MVMCoreUICheckBox.h>
|
||||
@ -94,7 +92,6 @@ FOUNDATION_EXPORT const unsigned char MVMCoreUIVersionString[];
|
||||
#import <MVMCoreUI/MFCustomButton.h>
|
||||
#import <MVMCoreUI/PrimaryButton.h>
|
||||
#import <MVMCoreUI/MFTextButton.h>
|
||||
#import <MVMCoreUI/MFCaretButton.h>
|
||||
|
||||
#pragma mark TextFields
|
||||
#import <MVMCoreUI/MFTextField.h>
|
||||
|
||||
@ -28,7 +28,9 @@
|
||||
@"standardHeader": StandardHeaderView.class,
|
||||
@"moleculeStack": MoleculeStackView.class,
|
||||
@"twoButtonView": TwoButtonView.class,
|
||||
@"standardFooter": StandardFooterView.class
|
||||
@"standardFooter": StandardFooterView.class,
|
||||
@"caretView": CaretView.class,
|
||||
@"caretButton": CaretButton.class
|
||||
} mutableCopy];
|
||||
});
|
||||
return mapping;
|
||||
|
||||
@ -32,6 +32,9 @@ extern NSString * const KeyBackgroundColor;
|
||||
extern NSString * const KeyText;
|
||||
extern NSString * const KeyTextColor;
|
||||
|
||||
extern NSString * const KeyIsHidden;
|
||||
extern NSString * const KeyIsOpaque;
|
||||
|
||||
#pragma mark - Values
|
||||
|
||||
extern NSString * const StringY;
|
||||
|
||||
@ -31,6 +31,9 @@ NSString * const KeyBackgroundColor = @"backgroundColor";
|
||||
NSString * const KeyText = @"text";
|
||||
NSString * const KeyTextColor = @"textColor";
|
||||
|
||||
NSString * const KeyIsHidden = @"isHidden";
|
||||
NSString * const KeyIsOpaque = @"isOpaque";
|
||||
|
||||
#pragma mark - Values
|
||||
|
||||
NSString * const StringY = @"Y";
|
||||
|
||||
Loading…
Reference in New Issue
Block a user