Merge remote-tracking branch 'origin/develop' into feature/view_masking

This commit is contained in:
Kyle Matthew Hedden 2022-07-13 20:14:09 -04:00
commit 664d90a713
39 changed files with 142 additions and 113 deletions

View File

@ -199,7 +199,6 @@
9445891F2385D2E900DE9FD4 /* CaretViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9445891E2385D2E900DE9FD4 /* CaretViewModel.swift */; }; 9445891F2385D2E900DE9FD4 /* CaretViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9445891E2385D2E900DE9FD4 /* CaretViewModel.swift */; };
944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589202385D6E900DE9FD4 /* DashLineModel.swift */; }; 944589212385D6E900DE9FD4 /* DashLineModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589202385D6E900DE9FD4 /* DashLineModel.swift */; };
944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589222385DA9500DE9FD4 /* ImageViewModel.swift */; }; 944589232385DA9600DE9FD4 /* ImageViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 944589222385DA9500DE9FD4 /* ImageViewModel.swift */; };
9455B19C234F8A0400A574DB /* MVMAnimationFramework.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */; };
9458C3172406C8FD00930963 /* UIFont+FontWrapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9458C3172406C8FD00930963 /* UIFont+FontWrapping.h in Headers */ = {isa = PBXBuildFile; fileRef = 9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */; settings = {ATTRIBUTES = (Public, ); }; };
9458C3182406C8FD00930963 /* UIFont+FontWrapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */; }; 9458C3182406C8FD00930963 /* UIFont+FontWrapping.m in Sources */ = {isa = PBXBuildFile; fileRef = 9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */; };
948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; }; 948DB67E2326DCD90011F916 /* MultiProgress.swift in Sources */ = {isa = PBXBuildFile; fileRef = 948DB67D2326DCD90011F916 /* MultiProgress.swift */; };
@ -793,7 +792,6 @@
9445891E2385D2E900DE9FD4 /* CaretViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaretViewModel.swift; sourceTree = "<group>"; }; 9445891E2385D2E900DE9FD4 /* CaretViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CaretViewModel.swift; sourceTree = "<group>"; };
944589202385D6E900DE9FD4 /* DashLineModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashLineModel.swift; sourceTree = "<group>"; }; 944589202385D6E900DE9FD4 /* DashLineModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DashLineModel.swift; sourceTree = "<group>"; };
944589222385DA9500DE9FD4 /* ImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewModel.swift; sourceTree = "<group>"; }; 944589222385DA9500DE9FD4 /* ImageViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewModel.swift; sourceTree = "<group>"; };
9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MVMAnimationFramework.framework; path = ../SharedFrameworks/MVMAnimationFramework.framework; sourceTree = "<group>"; };
9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+FontWrapping.h"; sourceTree = "<group>"; }; 9458C3152406C8FD00930963 /* UIFont+FontWrapping.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIFont+FontWrapping.h"; sourceTree = "<group>"; };
9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIFont+FontWrapping.m"; sourceTree = "<group>"; }; 9458C3162406C8FD00930963 /* UIFont+FontWrapping.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIFont+FontWrapping.m"; sourceTree = "<group>"; };
948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; }; 948DB67D2326DCD90011F916 /* MultiProgress.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiProgress.swift; sourceTree = "<group>"; };
@ -1198,7 +1196,6 @@
files = ( files = (
D29DF0E621E4F3C7003B2FB9 /* MVMCore.framework in Frameworks */, D29DF0E621E4F3C7003B2FB9 /* MVMCore.framework in Frameworks */,
AFE4A1D127DFB5EE00C458D0 /* VDSColorTokens.xcframework in Frameworks */, AFE4A1D127DFB5EE00C458D0 /* VDSColorTokens.xcframework in Frameworks */,
9455B19C234F8A0400A574DB /* MVMAnimationFramework.framework in Frameworks */,
187FEB2A2844D2A600BF29C2 /* VDSFormControlsTokens.xcframework in Frameworks */, 187FEB2A2844D2A600BF29C2 /* VDSFormControlsTokens.xcframework in Frameworks */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
@ -2036,7 +2033,6 @@
187FEB292844D2A600BF29C2 /* VDSFormControlsTokens.xcframework */, 187FEB292844D2A600BF29C2 /* VDSFormControlsTokens.xcframework */,
AFE4A1D027DFB5EE00C458D0 /* VDSColorTokens.xcframework */, AFE4A1D027DFB5EE00C458D0 /* VDSColorTokens.xcframework */,
D29DF0E521E4F3C7003B2FB9 /* MVMCore.framework */, D29DF0E521E4F3C7003B2FB9 /* MVMCore.framework */,
9455B19B234F8A0400A574DB /* MVMAnimationFramework.framework */,
); );
name = Frameworks; name = Frameworks;
sourceTree = "<group>"; sourceTree = "<group>";
@ -2587,7 +2583,7 @@
D29DF0C321E404D4003B2FB9 /* Project object */ = { D29DF0C321E404D4003B2FB9 /* Project object */ = {
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
LastUpgradeCheck = 1010; LastUpgradeCheck = 1320;
ORGANIZATIONNAME = "Verizon Wireless"; ORGANIZATIONNAME = "Verizon Wireless";
TargetAttributes = { TargetAttributes = {
D29DF0CB21E404D4003B2FB9 = { D29DF0CB21E404D4003B2FB9 = {
@ -3193,7 +3189,9 @@
D29DF0D221E404D4003B2FB9 /* Debug */ = { D29DF0D221E404D4003B2FB9 /* Debug */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@ -3217,6 +3215,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -3229,7 +3228,6 @@
DEBUG_INFORMATION_FORMAT = dwarf; DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES; ENABLE_TESTABILITY = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO; GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
@ -3244,7 +3242,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES; ONLY_ACTIVE_ARCH = YES;
@ -3259,7 +3257,9 @@
D29DF0D321E404D4003B2FB9 /* Release */ = { D29DF0D321E404D4003B2FB9 /* Release */ = {
isa = XCBuildConfiguration; isa = XCBuildConfiguration;
buildSettings = { buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
ALWAYS_SEARCH_USER_PATHS = NO; ALWAYS_SEARCH_USER_PATHS = NO;
BUILD_LIBRARY_FOR_DISTRIBUTION = YES;
CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;
CLANG_ANALYZER_NONNULL = YES; CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
@ -3283,6 +3283,7 @@
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES; CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES;
@ -3295,7 +3296,6 @@
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO; ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64;
GCC_C_LANGUAGE_STANDARD = gnu11; GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
@ -3304,7 +3304,7 @@
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES; GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 11.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
MTL_ENABLE_DEBUG_INFO = NO; MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES; MTL_FAST_MATH = YES;
SDKROOT = iphoneos; SDKROOT = iphoneos;
@ -3331,7 +3331,7 @@
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../SharedFrameworks"; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../SharedFrameworks";
INFOPLIST_FILE = MVMCoreUI/Info.plist; INFOPLIST_FILE = MVMCoreUI/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
@ -3362,7 +3362,7 @@
FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../SharedFrameworks"; FRAMEWORK_SEARCH_PATHS = "$(PROJECT_DIR)/../SharedFrameworks";
INFOPLIST_FILE = MVMCoreUI/Info.plist; INFOPLIST_FILE = MVMCoreUI/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
IPHONEOS_DEPLOYMENT_TARGET = 13.0; IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = ( LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",

View File

@ -8,12 +8,12 @@
#import "MVMCoreAlertHandler.h" #import "MVMCoreAlertHandler.h"
#import "MVMCoreAlertObject.h" #import "MVMCoreAlertObject.h"
#import <MVMCore/MVMCoreAlertController.h> @import MVMCore.MVMCoreAlertController;
#import "MVMCoreAlertOperation.h" #import "MVMCoreAlertOperation.h"
#import "MVMCoreTopAlertOperation.h" #import "MVMCoreTopAlertOperation.h"
#import <MVMCore/MVMCoreJSONConstants.h> @import MVMCore.MVMCoreJSONConstants;
#import <MVMCore/NSDictionary+MFConvenience.h> @import MVMCore.NSDictionary_MFConvenience;
#import <MVMCore/NSArray+MFConvenience.h> @import MVMCore.NSArray_MFConvenience;
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
@interface MVMCoreAlertHandler () @interface MVMCoreAlertHandler ()

View File

@ -8,9 +8,9 @@
// An object for keeping track of all alert variables. Easier to pass around. // An object for keeping track of all alert variables. Easier to pass around.
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <MVMCore/MVMCoreActionDelegateProtocol.h> @import MVMCore.MVMCoreActionDelegateProtocol;
#import <MVMCore/MVMCoreLoadDelegateProtocol.h> @import MVMCore.MVMCoreLoadDelegateProtocol;
#import <MVMCore/MVMCorePresentationDelegateProtocol.h> @import MVMCore.MVMCorePresentationDelegateProtocol;
#import <MVMCoreUI/MVMCoreAlertDelegateProtocol.h> #import <MVMCoreUI/MVMCoreAlertDelegateProtocol.h>
@class MVMCoreErrorObject; @class MVMCoreErrorObject;

View File

@ -9,16 +9,16 @@
#import "MVMCoreAlertObject.h" #import "MVMCoreAlertObject.h"
#import "MVMCoreAlertHandler.h" #import "MVMCoreAlertHandler.h"
#import "MVMCoreTopAlertObject.h" #import "MVMCoreTopAlertObject.h"
#import <MVMCore/MVMCoreCache.h> @import MVMCore.MVMCoreCache;
#import <MVMCore/MVMCoreErrorConstants.h> @import MVMCore.MVMCoreErrorConstants;
#import <MVMCore/MVMCoreErrorObject.h> @import MVMCore.MVMCoreErrorObject;
#import <MVMCore/MVMCoreLoadObject.h> @import MVMCore.MVMCoreLoadObject;
#import <MVMCore/MVMCoreGetterUtility.h> @import MVMCore.MVMCoreGetterUtility;
#import <MVMCore/NSDictionary+MFConvenience.h> @import MVMCore.NSDictionary_MFConvenience;
#import <MVMCore/MVMCoreHardcodedStringsConstants.h> @import MVMCore.MVMCoreHardcodedStringsConstants;
#import <MVMCore/MVMCoreJSONConstants.h> @import MVMCore.MVMCoreJSONConstants;
#import <MVMCore/MVMCoreActionHandler.h> @import MVMCore.MVMCoreActionHandler;
#import <MVMCore/MVMCore-Swift.h> @import MVMCore.Swift;
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
@interface MVMCoreAlertObject () @interface MVMCoreAlertObject ()

View File

@ -9,7 +9,7 @@
#import <Foundation/Foundation.h> #import <Foundation/Foundation.h>
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <MVMCore/MVMCoreOperation.h> @import MVMCore.MVMCoreOperation;
#import <MVMCoreUI/MVMCoreAlertDelegateProtocol.h> #import <MVMCoreUI/MVMCoreAlertDelegateProtocol.h>
@interface MVMCoreAlertOperation : MVMCoreOperation @interface MVMCoreAlertOperation : MVMCoreOperation

View File

@ -8,8 +8,8 @@
#import "MVMCoreAlertOperation.h" #import "MVMCoreAlertOperation.h"
#import <MVMCoreUI/MVMCoreAlertHandler.h> #import <MVMCoreUI/MVMCoreAlertHandler.h>
#import <MVMCore/MVMCoreAlertController.h> @import MVMCore.MVMCoreAlertController;
#import <MVMCore/MVMCoreNavigationHandler.h> @import MVMCore.MVMCoreNavigationHandler;
@interface MVMCoreAlertOperation () { @interface MVMCoreAlertOperation () {
__block BOOL _paused; __block BOOL _paused;

View File

@ -8,7 +8,7 @@
import Foundation import Foundation
public protocol RadioBoxSelectionDelegate: class { public protocol RadioBoxSelectionDelegate: AnyObject {
func selected(radioBox: RadioBoxModel) func selected(radioBox: RadioBoxModel)
} }

View File

@ -15,7 +15,6 @@ public extension UIPickerView {
let picker = UIPickerView(frame: .zero) let picker = UIPickerView(frame: .zero)
picker.backgroundColor = .mvmWhite picker.backgroundColor = .mvmWhite
picker.showsSelectionIndicator = true
return picker return picker
} }

View File

@ -41,7 +41,7 @@ public class HeadersH2TinyButtonModel: HeaderModel, MoleculeModelProtocol {
} }
super.setDefaults() super.setDefaults()
button.style = .secondary button.style = .secondary
button.size = .tiny button.size = .small
} }
//-------------------------------------------------- //--------------------------------------------------

View File

@ -76,7 +76,9 @@
} }
public override func didSelectCell(at index: IndexPath, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) { public override func didSelectCell(at index: IndexPath, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?) {
checkbox.isSelected.toggle() if checkbox.isEnabled {
checkbox.isSelected.toggle()
}
} }
//---------------------------------------------------- //----------------------------------------------------

View File

@ -51,9 +51,7 @@ open class HeaderView: Container {
open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { open override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {
super.set(with: model, delegateObject, additionalData) super.set(with: model, delegateObject, additionalData)
guard let headerModel = headerModel else { return } guard let headerModel = headerModel else { return }
if let lineModel = headerModel.line { line.setOptional(with: headerModel.line, delegateObject, additionalData)
line.set(with: lineModel, delegateObject, additionalData)
}
} }
open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? { open override class func estimatedHeight(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?) -> CGFloat? {

View File

@ -30,9 +30,6 @@
if bottomPadding == nil { if bottomPadding == nil {
bottomPadding = PaddingDefaultVerticalSpacing bottomPadding = PaddingDefaultVerticalSpacing
} }
if line == nil {
line = LineModel(type: .heavy)
}
} }
public override init() { public override init() {

View File

@ -18,7 +18,8 @@ class AccordionListItemModel: MoleculeListItemModel {
public var molecules: [ListItemModelProtocol & MoleculeModelProtocol] public var molecules: [ListItemModelProtocol & MoleculeModelProtocol]
public var hideLineWhenExpanded: Bool = false public var hideLineWhenExpanded: Bool = false
public var selected: Bool = false public var selected: Bool = false
public var expandAction: ActionModelProtocol?
public var collapseAction: ActionModelProtocol?
private var added: Bool = false private var added: Bool = false
//-------------------------------------------------- //--------------------------------------------------
@ -31,6 +32,8 @@ class AccordionListItemModel: MoleculeListItemModel {
case molecule case molecule
case hideLineWhenExpanded case hideLineWhenExpanded
case selected case selected
case expandAction
case collapseAction
} }
//-------------------------------------------------- //--------------------------------------------------
@ -62,6 +65,8 @@ class AccordionListItemModel: MoleculeListItemModel {
if let hideLine = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideLineWhenExpanded) { if let hideLine = try typeContainer.decodeIfPresent(Bool.self, forKey: .hideLineWhenExpanded) {
hideLineWhenExpanded = hideLine hideLineWhenExpanded = hideLine
} }
expandAction = try typeContainer.decodeModelIfPresent(codingKey: .expandAction)
collapseAction = try typeContainer.decodeModelIfPresent(codingKey: .collapseAction)
try super.init(from: decoder) try super.init(from: decoder)
} }
@ -72,6 +77,8 @@ class AccordionListItemModel: MoleculeListItemModel {
try container.encodeModels(molecules, forKey: .molecules) try container.encodeModels(molecules, forKey: .molecules)
try container.encode(selected, forKey: .selected) try container.encode(selected, forKey: .selected)
try container.encodeIfPresent(hideLineWhenExpanded, forKey: .hideLineWhenExpanded) try container.encodeIfPresent(hideLineWhenExpanded, forKey: .hideLineWhenExpanded)
try container.encodeModelIfPresent(expandAction, forKey: .expandAction)
try container.encodeModelIfPresent(collapseAction, forKey: .collapseAction)
} }
} }

View File

@ -54,6 +54,10 @@
if (accordionListItemModel?.hideLineWhenExpanded ?? false) && (self.bottomSeparatorView?.shouldBeVisible() ?? false) { if (accordionListItemModel?.hideLineWhenExpanded ?? false) && (self.bottomSeparatorView?.shouldBeVisible() ?? false) {
bottomSeparatorView?.isHidden = accordionButton.isSelected bottomSeparatorView?.isHidden = accordionButton.isSelected
} }
if let actionModel = accordionButton.isSelected ? accordionListItemModel?.expandAction : accordionListItemModel?.collapseAction {
MVMCoreActionHandler.shared()?.asyncHandleAction(with: actionModel, additionalData: [KeySourceModel: model], delegateObject: delegateObject)
}
} }
public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) { public override func set(with model: MoleculeModelProtocol, _ delegateObject: MVMCoreUIDelegateObject?, _ additionalData: [AnyHashable: Any]?) {

View File

@ -153,7 +153,7 @@ import UIKit
// override the separator // override the separator
if let separator = model.line { if let separator = model.line {
addSeparatorsIfNeeded() addSeparatorsIfNeeded()
bottomSeparatorView?.set(with: separator, nil, nil) bottomSeparatorView?.setStyle(separator.type)
} }
if let moleculeModel = model as? MoleculeModelProtocol, if let moleculeModel = model as? MoleculeModelProtocol,
@ -243,8 +243,8 @@ import UIKit
open func setLines(with model: LineModel?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?, indexPath: IndexPath) { open func setLines(with model: LineModel?, delegateObject: MVMCoreUIDelegateObject?, additionalData: [AnyHashable: Any]?, indexPath: IndexPath) {
addSeparatorsIfNeeded() addSeparatorsIfNeeded()
if let model = model { if let model = model {
topSeparatorView?.set(with: model, delegateObject, additionalData) topSeparatorView?.setStyle(model.type)
bottomSeparatorView?.set(with: model, delegateObject, additionalData) bottomSeparatorView?.setStyle(model.type)
} else { } else {
topSeparatorView?.setStyle(.secondary) topSeparatorView?.setStyle(.secondary)
bottomSeparatorView?.setStyle(.secondary) bottomSeparatorView?.setStyle(.secondary)

View File

@ -7,8 +7,6 @@
// //
import UIKit import UIKit
import MVMAnimationFramework
open class ThreeLayerTableViewController: ProgrammaticTableViewController { open class ThreeLayerTableViewController: ProgrammaticTableViewController {
//-------------------------------------------------- //--------------------------------------------------

View File

@ -8,7 +8,6 @@
// This class has three views, a top, middle, and bottom. The top view is just the first view in the scrollview. The middle can be aligned center, top, or bottom depending on if spaceBetweenTopAndMiddle() or spaceBetweenMiddleAndBottom() return values. The bottom view, if inside the scrollview, appears pinned to the bottom unless content pushes it off the screen. If outside the scroll, it's pinned to the bottom under the scrollview. // This class has three views, a top, middle, and bottom. The top view is just the first view in the scrollview. The middle can be aligned center, top, or bottom depending on if spaceBetweenTopAndMiddle() or spaceBetweenMiddleAndBottom() return values. The bottom view, if inside the scrollview, appears pinned to the bottom unless content pushes it off the screen. If outside the scroll, it's pinned to the bottom under the scrollview.
import UIKit import UIKit
import MVMAnimationFramework
open class ThreeLayerViewController: ProgrammaticScrollViewController { open class ThreeLayerViewController: ProgrammaticScrollViewController {

View File

@ -1069,7 +1069,7 @@ CGFloat const PanelAnimationDuration = 0.2;
// Returns the desired view or falls back. Hot fix until we can get away from using these functions... // Returns the desired view or falls back. Hot fix until we can get away from using these functions...
+ (CGRect)getBounds:(UIView *)desiredView { + (CGRect)getBounds:(UIView *)desiredView {
UIView *view = desiredView ?: [MVMCoreNavigationHandler sharedNavigationHandler].navigationController.view ?: [UIApplication sharedApplication].keyWindow.rootViewController.view; UIView *view = desiredView ?: [MVMCoreNavigationHandler sharedNavigationHandler].navigationController.view ?: [MVMCoreGetterUtility getKeyWindow].rootViewController.view;
return view ? view.bounds : [UIScreen mainScreen].bounds; return view ? view.bounds : [UIScreen mainScreen].bounds;
} }
@ -1094,7 +1094,7 @@ CGFloat const PanelAnimationDuration = 0.2;
} }
- (UIViewController *)getCurrentVisibleController { - (UIViewController *)getCurrentVisibleController {
UIViewController *baseViewController = [MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn ?: [UIApplication sharedApplication].keyWindow.rootViewController; UIViewController *baseViewController = [MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn ?: [MVMCoreGetterUtility getKeyWindow].rootViewController;
UIViewController *viewController = nil; UIViewController *viewController = nil;
while (baseViewController.presentedViewController && !baseViewController.presentedViewController.isBeingDismissed) { while (baseViewController.presentedViewController && !baseViewController.presentedViewController.isBeingDismissed) {
viewController = baseViewController.presentedViewController; viewController = baseViewController.presentedViewController;

View File

@ -5,7 +5,7 @@
// Created by Scott Pfeil on 10/28/20. // Created by Scott Pfeil on 10/28/20.
// Copyright © 2020 Verizon Wireless. All rights reserved. // Copyright © 2020 Verizon Wireless. All rights reserved.
// //
#import <MVMCore/MVMCoreActionDelegateProtocol.h> @import MVMCore.MVMCoreActionDelegateProtocol;
@class MVMCoreAlertObject; @class MVMCoreAlertObject;
@protocol MVMCoreUIActionDelegateProtocol <MVMCoreActionDelegateProtocol> @protocol MVMCoreUIActionDelegateProtocol <MVMCoreActionDelegateProtocol>

View File

@ -6,7 +6,7 @@
// Copyright © 2020 Verizon Wireless. All rights reserved. // Copyright © 2020 Verizon Wireless. All rights reserved.
// //
#import <MVMCore/MVMCoreActionHandler.h> @import MVMCore.MVMCoreActionHandler;
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN

View File

@ -6,7 +6,7 @@
// Copyright © 2019 Verizon Wireless. All rights reserved. // Copyright © 2019 Verizon Wireless. All rights reserved.
// //
#import <MVMCore/MVMCore.h> @import MVMCore.MVMCoreViewControllerMappingObject;
NS_ASSUME_NONNULL_BEGIN NS_ASSUME_NONNULL_BEGIN

View File

@ -7,7 +7,7 @@
// //
#import "MVMCoreUIViewControllerMappingObject.h" #import "MVMCoreUIViewControllerMappingObject.h"
#import <MVMCore/MVMCoreViewControllerProgrammaticMappingObject.h> @import MVMCore.MVMCoreViewControllerProgrammaticMappingObject;
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
@implementation MVMCoreUIViewControllerMappingObject @implementation MVMCoreUIViewControllerMappingObject

Binary file not shown.

Before

Width:  |  Height:  |  Size: 571 B

After

Width:  |  Height:  |  Size: 435 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 810 B

After

Width:  |  Height:  |  Size: 631 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

After

Width:  |  Height:  |  Size: 257 B

View File

@ -1,23 +1,23 @@
{ {
"images" : [ "images" : [
{ {
"idiom" : "universal",
"filename" : "Close.png", "filename" : "Close.png",
"idiom" : "universal",
"scale" : "1x" "scale" : "1x"
}, },
{ {
"idiom" : "universal",
"filename" : "Close-1.png", "filename" : "Close-1.png",
"idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "universal",
"filename" : "Close-2.png", "filename" : "Close-2.png",
"idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }

View File

@ -7,9 +7,9 @@
// //
#import "MVMCoreTopAlertObject.h" #import "MVMCoreTopAlertObject.h"
#import <MVMCore/NSDictionary+MFConvenience.h> @import MVMCore.NSDictionary_MFConvenience;
#import <MVMCore/MVMCoreGetterUtility.h> @import MVMCore.MVMCoreGetterUtility;
#import <MVMCore/MVMCoreJSONConstants.h> @import MVMCore.MVMCoreJSONConstants;
#import "MVMCoreAlertHandler.h" #import "MVMCoreAlertHandler.h"
NSUInteger const TopAlertDismissTime = 5; NSUInteger const TopAlertDismissTime = 5;

View File

@ -6,7 +6,7 @@
// Copyright © 2016 Verizon Wireless. All rights reserved. // Copyright © 2016 Verizon Wireless. All rights reserved.
// //
#import <MVMCore/MVMCoreOperation.h> @import MVMCore.MVMCoreOperation;
#import <MVMCoreUI/MVMCoreTopAlertAnimationDelegateProtocol.h> #import <MVMCoreUI/MVMCoreTopAlertAnimationDelegateProtocol.h>
@class MVMCoreTopAlertObject; @class MVMCoreTopAlertObject;

View File

@ -8,7 +8,7 @@
#import <UIKit/UIKit.h> #import <UIKit/UIKit.h>
#import <MVMCoreUI/MVMCoreTopAlertAnimationDelegateProtocol.h> #import <MVMCoreUI/MVMCoreTopAlertAnimationDelegateProtocol.h>
#import <MVMCore/MVMCoreViewProtocol.h> @import MVMCore.MVMCoreViewProtocol;
@class Button; @class Button;

View File

@ -7,13 +7,13 @@
// //
#import "MVMCoreUITopAlertBaseView.h" #import "MVMCoreUITopAlertBaseView.h"
#import <MVMCore/MVMCoreActionHandler.h> @import MVMCore.MVMCoreActionHandler;
#import "MVMCoreUISplitViewController.h" #import "MVMCoreUISplitViewController.h"
#import <MVMCore/MVMCoreLoadObject.h> @import MVMCore.MVMCoreLoadObject;
#import <MVMCore/MVMCoreRequestParameters.h> @import MVMCore.MVMCoreRequestParameters;
#import "MVMCoreUITopAlertView.h" #import "MVMCoreUITopAlertView.h"
#import <MVMCore/MVMCoreJSONConstants.h> @import MVMCore.MVMCoreJSONConstants;
#import <MVMCore/NSDictionary+MFConvenience.h> @import MVMCore.NSDictionary_MFConvenience;
#import "UIColor+MFConvenience.h" #import "UIColor+MFConvenience.h"
#import "MVMCoreUICommonViewsUtility.h" #import "MVMCoreUICommonViewsUtility.h"
#import "MFStyler.h" #import "MFStyler.h"

View File

@ -9,11 +9,11 @@
#import "MVMCoreUITopAlertExpandableView.h" #import "MVMCoreUITopAlertExpandableView.h"
#import "MVMCoreUITopAlertShortView.h" #import "MVMCoreUITopAlertShortView.h"
#import "MVMCoreUITopAlertMainView.h" #import "MVMCoreUITopAlertMainView.h"
#import <MVMCore/MVMCoreDispatchUtility.h> @import MVMCore.MVMCoreDispatchUtility;
#import <MVMCoreUI/MVMCoreTopAlertObject.h> #import <MVMCoreUI/MVMCoreTopAlertObject.h>
#import <MVMCoreUI/MVMCoreAlertHandler.h> #import <MVMCoreUI/MVMCoreAlertHandler.h>
#import <MVMCore/MVMCoreBlockOperation.h> @import MVMCore.MVMCoreBlockOperation;
#import <MVMCore/MVMCoreNavigationHandler.h> @import MVMCore.MVMCoreNavigationHandler;
#import "MFStyler.h" #import "MFStyler.h"
#import "NSLayoutConstraint+MFConvenience.h" #import "NSLayoutConstraint+MFConvenience.h"
#import "MVMCoreUIUtility.h" #import "MVMCoreUIUtility.h"

View File

@ -9,13 +9,13 @@
#import "MVMCoreUITopAlertMainView.h" #import "MVMCoreUITopAlertMainView.h"
#import "MFStyler.h" #import "MFStyler.h"
#import "NSLayoutConstraint+MFConvenience.h" #import "NSLayoutConstraint+MFConvenience.h"
#import <MVMCore/NSDictionary+MFConvenience.h> @import MVMCore.NSDictionary_MFConvenience;
#import <MVMCore/MVMCoreDispatchUtility.h> @import MVMCore.MVMCoreDispatchUtility;
#import <MVMCoreUI/MVMCoreTopAlertObject.h> #import <MVMCoreUI/MVMCoreTopAlertObject.h>
#import "UIColor+MFConvenience.h" #import "UIColor+MFConvenience.h"
#import <MVMCoreUI/MVMCoreAlertHandler.h> #import <MVMCoreUI/MVMCoreAlertHandler.h>
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>
#import <MVMCore/MVMCoreJSONConstants.h> @import MVMCore.MVMCoreJSONConstants;
#import "MVMCoreUICommonViewsUtility.h" #import "MVMCoreUICommonViewsUtility.h"
#import "MVMCoreUITopAlertView.h" #import "MVMCoreUITopAlertView.h"
#import <MVMCoreUI/MVMCoreUI-Swift.h> #import <MVMCoreUI/MVMCoreUI-Swift.h>

View File

@ -217,7 +217,6 @@ static const CGFloat VertialShadowOffset = 6;
+ (UIPickerView *)commonPickerView { + (UIPickerView *)commonPickerView {
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectZero]; UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectZero];
picker.backgroundColor = [UIColor whiteColor]; picker.backgroundColor = [UIColor whiteColor];
picker.showsSelectionIndicator = YES;
return picker; return picker;
} }

View File

@ -52,7 +52,7 @@
} }
+ (UIViewController *)getCurrentVisibleController { + (UIViewController *)getCurrentVisibleController {
UIViewController *baseViewController = [MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn ?: [UIApplication sharedApplication].keyWindow.rootViewController; UIViewController *baseViewController = [MVMCoreNavigationHandler sharedNavigationHandler].viewControllerToPresentOn ?: [MVMCoreGetterUtility getKeyWindow].rootViewController;
UIViewController *viewController = nil; UIViewController *viewController = nil;
while (baseViewController.presentedViewController && !baseViewController.presentedViewController.isBeingDismissed) { while (baseViewController.presentedViewController && !baseViewController.presentedViewController.isBeingDismissed) {
viewController = baseViewController.presentedViewController; viewController = baseViewController.presentedViewController;
@ -201,10 +201,10 @@
} }
+ (CGFloat)getTopSpaceWithStatusBarForView:(UIView *)view { + (CGFloat)getTopSpaceWithStatusBarForView:(UIView *)view {
CGPoint viewStartPointInWindowSpace = [[UIApplication sharedApplication].keyWindow convertPoint:CGPointMake(CGRectGetMinX(view.frame), CGRectGetMinY(view.frame)) fromView:[view superview]]; CGPoint viewStartPointInWindowSpace = [[MVMCoreGetterUtility getKeyWindow] convertPoint:CGPointMake(CGRectGetMinX(view.frame), CGRectGetMinY(view.frame)) fromView:[view superview]];
if (CGRectGetMaxY([UIApplication sharedApplication].statusBarFrame) > viewStartPointInWindowSpace.y) { CGFloat maxY = CGRectGetMaxY([[[[MVMCoreGetterUtility getKeyWindow] windowScene] statusBarManager] statusBarFrame]);
if (maxY > viewStartPointInWindowSpace.y) {
return CGRectGetMaxY([UIApplication sharedApplication].statusBarFrame) - viewStartPointInWindowSpace.y; return maxY - viewStartPointInWindowSpace.y;
} else { } else {
return 0; return 0;
} }
@ -277,7 +277,7 @@
CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue]; CGRect keyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
// Gets the scrollview end point in the window coordinate space to see if the keyboard will cover the scroll view at all. (This conversion allows the scrollview to be anyhwere in the hierarchy). // Gets the scrollview end point in the window coordinate space to see if the keyboard will cover the scroll view at all. (This conversion allows the scrollview to be anyhwere in the hierarchy).
CGPoint scrollEndPointInWindowSpace = [[UIApplication sharedApplication].keyWindow convertPoint:CGPointMake(CGRectGetMinX(scrollView.frame), CGRectGetMaxY(scrollView.frame)) fromView:[scrollView superview]]; CGPoint scrollEndPointInWindowSpace = [[MVMCoreGetterUtility getKeyWindow] convertPoint:CGPointMake(CGRectGetMinX(scrollView.frame), CGRectGetMaxY(scrollView.frame)) fromView:[scrollView superview]];
// Also takes into account the current content inset. (Even if the keyboard covers the frame, it might not matter if the bottom content inset is set to above the keyboard anyway). // Also takes into account the current content inset. (Even if the keyboard covers the frame, it might not matter if the bottom content inset is set to above the keyboard anyway).
if (scrollEndPointInWindowSpace.y - scrollView.contentInset.bottom > CGRectGetMinY(keyboardRect)) { if (scrollEndPointInWindowSpace.y - scrollView.contentInset.bottom > CGRectGetMinY(keyboardRect)) {

View File

@ -9,6 +9,7 @@
#import <MVMCoreUI/MFSizeObject.h> #import <MVMCoreUI/MFSizeObject.h>
#import "MVMCoreUISplitViewController.h" #import "MVMCoreUISplitViewController.h"
@import MVMCore.MVMCoreGetterUtility; @import MVMCore.MVMCoreGetterUtility;
@import MVMCore.Swift;
CGFloat const MFSizeiPhone4HeightThreshold = 490; CGFloat const MFSizeiPhone4HeightThreshold = 490;
CGFloat const MFSizeiPhone5HeightThreshold = 578; CGFloat const MFSizeiPhone5HeightThreshold = 578;
@ -145,7 +146,7 @@ CGFloat const MFSizeMostlySweetSpotThreshold = 750;
- (CGFloat)getValueBasedOnScreenSize { - (CGFloat)getValueBasedOnScreenSize {
CGRect screenFrame = [[UIScreen mainScreen] bounds]; CGRect screenFrame = [[UIScreen mainScreen] bounds];
if ([MVMCoreGetterUtility isOnIPad]) { if ([MVMCoreGetterUtility isOnIPad]) {
if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { if (UIInterfaceOrientationIsLandscape([[[MVMCoreGetterUtility getKeyWindow] windowScene] interfaceOrientation])) {
return [self getValueBasedOnSize:CGRectGetWidth(screenFrame)]; return [self getValueBasedOnSize:CGRectGetWidth(screenFrame)];
} else { } else {
return [self getValueBasedOnSize:CGRectGetHeight(screenFrame)]; return [self getValueBasedOnSize:CGRectGetHeight(screenFrame)];
@ -198,7 +199,7 @@ CGFloat const MFSizeMostlySweetSpotThreshold = 750;
- (void)performBlockBaseOnScreenSize { - (void)performBlockBaseOnScreenSize {
CGRect screenFrame = [[UIScreen mainScreen] bounds]; CGRect screenFrame = [[UIScreen mainScreen] bounds];
if ([MVMCoreGetterUtility isOnIPad]) { if ([MVMCoreGetterUtility isOnIPad]) {
if (UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation)) { if (UIInterfaceOrientationIsLandscape([[[MVMCoreGetterUtility getKeyWindow] windowScene] interfaceOrientation])) {
[self performBlockBaseOnSize:CGRectGetWidth(screenFrame)]; [self performBlockBaseOnSize:CGRectGetWidth(screenFrame)];
} else { } else {
[self performBlockBaseOnSize:CGRectGetHeight(screenFrame)]; [self performBlockBaseOnSize:CGRectGetHeight(screenFrame)];

View File

@ -2,32 +2,57 @@
unset TOOLCHAINS #Xcode 7.3 BUG FIX http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode unset TOOLCHAINS #Xcode 7.3 BUG FIX http://stackoverflow.com/questions/36184930/xcodebuild-7-3-cant-enable-bitcode
# define output folder environment variable # define variables
C_PROJECT_NAME="MVMCoreUI" C_PROJECT_NAME="MVMCoreUI"
PHONE_CONFIGURATION="Release" PHONE_CONFIGURATION="Release"
BUILD_DIR=$(xcodebuild -showBuildSettings -project ./${C_PROJECT_NAME}.xcodeproj | grep -w -o 'BUILD_DIR = .*' | cut -d\ -f3-)
PHONE_ARCHIVE_PATH="${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}.xcarchive"
SIMULATOR_CONFIGURATION="Debug" SIMULATOR_CONFIGURATION="Debug"
BUILD_DIR=$(xcodebuild -showBuildSettings -project ./MVMCoreUI.xcodeproj | grep -w -o 'BUILD_DIR = .*' | cut -d\ -f3-) SIMULATOR_ARCHIVE_PATH="${BUILD_DIR}/${SIMULATOR_CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.xcarchive"
SIMULATOR_LIBRARY_PATH="${BUILD_DIR}/${SIMULATOR_CONFIGURATION}-iphonesimulator/${C_PROJECT_NAME}.framework"
FRAMEWORKS_DIR=$BUILD_DIR/../../../Frameworks/MVMCoreUI FRAMEWORKS_DIR=$BUILD_DIR/../../../Frameworks/MVMCoreUI
UNIVERSAL_OUTPUTFOLDER=${BUILD_DIR}/universal UNIVERSAL_OUTPUTFOLDER="${BUILD_DIR}/universal"
# Step 1. Build Device and Simulator versions # Update to use .xcframework
xcodebuild -scheme "${C_PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${PHONE_CONFIGURATION} -sdk iphoneos -archivePath "${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}" archive SKIP_INSTALL=false FRAMEWORK_SEARCH_PATHS=$FRAMEWORKS_DIR ALWAYS_SEARCH_USER_PATHS=true sed -i '' 's|MVMCore.framework \*\/ = {isa.*};|MVMCore.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = MVMCore.xcframework; path = ../SharedFrameworks/MVMCore.xcframework; sourceTree = "<group>"; };|g' ./MVMCoreUI.xcodeproj/project.pbxproj
sed -i '' 's/MVMCore.framework/MVMCore.xcframework/g' ./MVMCoreUI.xcodeproj/project.pbxproj
xcodebuild -target "${C_PROJECT_NAME}" ONLY_ACTIVE_ARCH=NO -configuration ${SIMULATOR_CONFIGURATION} -sdk iphonesimulator BUILD_DIR=$BUILD_DIR FRAMEWORK_SEARCH_PATHS=$FRAMEWORKS_DIR ALWAYS_SEARCH_USER_PATHS=true ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES=true sed -i '' "s|path = \.\.\/SharedFrameworks|path = ${FRAMEWORKS_DIR}|g" ./MVMCoreUI.xcodeproj/project.pbxproj
# Build device archive
xcodebuild archive \
-scheme "${C_PROJECT_NAME}" \
-configuration ${PHONE_CONFIGURATION} \
-archivePath "${PHONE_ARCHIVE_PATH}" \
-sdk iphoneos \
-destination 'generic/platform=iOS' \
-quiet \
SKIP_INSTALL=NO \
ONLY_ACTIVE_ARCH=NO \
FRAMEWORK_SEARCH_PATHS="$FRAMEWORKS_DIR" \
ALWAYS_SEARCH_USER_PATHS=true
# Build simulator archive
xcodebuild archive \
-scheme "${C_PROJECT_NAME}" \
-configuration ${SIMULATOR_CONFIGURATION} \
-archivePath "${SIMULATOR_ARCHIVE_PATH}" \
-sdk iphonesimulator \
-destination 'generic/platform=iOS Simulator' \
-quiet \
SKIP_INSTALL=NO \
ONLY_ACTIVE_ARCH=NO \
FRAMEWORK_SEARCH_PATHS=$FRAMEWORKS_DIR \
ALWAYS_SEARCH_USER_PATHS=true
mkdir -p "${UNIVERSAL_OUTPUTFOLDER}" mkdir -p "${UNIVERSAL_OUTPUTFOLDER}"
rm -rf ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework # Remove any existing xc framework.
cp -R "${BUILD_DIR}/${PHONE_CONFIGURATION}-iphoneos/${C_PROJECT_NAME}.xcarchive/Products/Library/Frameworks/${C_PROJECT_NAME}.framework" ${UNIVERSAL_OUTPUTFOLDER} rm -rf ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.xcframework
# Step 2. Create universal binary file using lipo # Create the xcframework in the universal output folder.
xcodebuild -create-xcframework \
-framework "${PHONE_ARCHIVE_PATH}/Products/Library/Frameworks/${C_PROJECT_NAME}.framework" \
-framework "${SIMULATOR_ARCHIVE_PATH}/Products/Library/Frameworks/${C_PROJECT_NAME}.framework" \
-output ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.xcframework
lipo -create -output "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}" "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}" "${SIMULATOR_LIBRARY_PATH}/${C_PROJECT_NAME}" # Copy the dSYM file as well.
ditto "${PHONE_ARCHIVE_PATH}/dSYMs/${C_PROJECT_NAME}.framework.dSYM" "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.xcframework.dSYM"
mv ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME} ${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/${C_PROJECT_NAME}
# For Swift framework, Swiftmodule needs to be copied in the universal framework
if [ -d "${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/" ]; then
cp -a "${SIMULATOR_LIBRARY_PATH}/Modules/${C_PROJECT_NAME}.swiftmodule/" "${UNIVERSAL_OUTPUTFOLDER}/${C_PROJECT_NAME}.framework/Modules/${C_PROJECT_NAME}.swiftmodule/"
fi

View File

@ -18,6 +18,8 @@ if [ ! -d $FRAMEWORKS_DIR ]; then
mkdir -p $FRAMEWORKS_DIR mkdir -p $FRAMEWORKS_DIR
fi fi
./Scripts/download_framework.sh $ARTIFACTORY_URL "$FRAMEWORKS_DIR/MVMCore.framework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMCore/1.0/MVMCore-1.0-Debug-SNAPSHOT.zip ./Scripts/download_framework.sh $ARTIFACTORY_URL "$FRAMEWORKS_DIR/MVMCore.xcframework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMCore/3.0/MVMCore-3.0-Debug-SNAPSHOT.zip
./Scripts/download_framework.sh $ARTIFACTORY_URL "$FRAMEWORKS_DIR/MVMAnimationFramework.framework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMAnimationFramework.framework/1.9/MVMAnimationFramework.framework-1.9.zip ./Scripts/download_framework.sh $ARTIFACTORY_URL "$FRAMEWORKS_DIR/VDSColorTokens.xcframework" GVJV_VDS_Maven/%40vds-tokens/ios/VDSColorTokens.1.0.6.xcframework.zip
./Scripts/download_framework.sh $ARTIFACTORY_URL "$FRAMEWORKS_DIR/VDSFormControlsTokens.xcframework" GVJV_VDS_Maven/@vds-tokens/ios/VDSFormControlsTokens.1.0.7.xcframework.zip

View File

@ -7,7 +7,8 @@
# Copied from Hedden, Kyle Matthew on 3/2/18. # Copied from Hedden, Kyle Matthew on 3/2/18.
# #
FRAMEWORK_VERSION=$(cd .. && agvtool vers -terse) BUILD_SETTINGS=$(xcodebuild -showBuildSettings -project ../MVMCoreUI.xcodeproj)
FRAMEWORK_VERSION=$(echo "$BUILD_SETTINGS" | grep -w -o 'MARKETING_VERSION = .*' | cut -d\ -f3-)
if [ $(git tag --list | grep "v${FRAMEWORK_VERSION}") ]; then if [ $(git tag --list | grep "v${FRAMEWORK_VERSION}") ]; then
echo This version tag has already been committed! Aborting! echo This version tag has already been committed! Aborting!
exit 1 exit 1
@ -20,5 +21,5 @@ if [ -z $ARTIFACTORY_URL ]; then
fi fi
# Upload # Upload
BUILD_DIR=$(xcodebuild -showBuildSettings -project ../MVMCoreUI.xcodeproj | grep -w -o 'BUILD_DIR = .*' | cut -d\ -f3-) BUILD_DIR=$(echo "$BUILD_SETTINGS" | grep -w -o 'BUILD_DIR = .*' | cut -d\ -f3-)
./upload_framework.sh $ARTIFACTORY_URL "${BUILD_DIR}/universal/MVMCoreUI.framework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMCoreUI/[VER]/MVMCoreUI-[VER]-Debug-SNAPSHOT ./upload_framework.sh $ARTIFACTORY_URL "${BUILD_DIR}/universal/MVMCoreUI.xcframework" BPHV_MobileFirst_IOS/com/vzw/hss/myverizon/MVMCoreUI/[VER]/MVMCoreUI-[VER]-Debug-SNAPSHOT $FRAMEWORK_VERSION

View File

@ -14,6 +14,7 @@
URL=$1 URL=$1
LOCALPATH=$2 LOCALPATH=$2
REMOTEPATH=$3 REMOTEPATH=$3
FRAMEWORKVER=$4
if [ -z $URL ]; then if [ -z $URL ]; then
echo "The artifactory instance url must be specified as the first argument!" echo "The artifactory instance url must be specified as the first argument!"
@ -29,10 +30,6 @@ cat "${LOCALPATH}/Info.plist"
LOCALBASE=$(basename "${LOCALPATH}") LOCALBASE=$(basename "${LOCALPATH}")
LOCALDIR=$(dirname "${LOCALPATH}") LOCALDIR=$(dirname "${LOCALPATH}")
# Grab the framework version from the bundled Info.plist.
FRAMEWORKVER=$(/usr/libexec/plistbuddy -c "Print :CFBundleShortVersionString" "${LOCALPATH}/Info.plist")
echo -e "\nFramework version: \t${FRAMEWORKVER}"
# Replace the [VER] placeholders with the found version. # Replace the [VER] placeholders with the found version.
REMOTEPATH="${REMOTEPATH//\[VER\]/$FRAMEWORKVER}" REMOTEPATH="${REMOTEPATH//\[VER\]/$FRAMEWORKVER}"
echo -e "Resolved path: \t\t${REMOTEPATH}" echo -e "Resolved path: \t\t${REMOTEPATH}"