代码重构

This commit is contained in:
xaoxuu 2022-09-10 02:54:25 +08:00
parent 385976768e
commit f028cceee9
187 changed files with 4807 additions and 6338 deletions

View File

@ -20,6 +20,34 @@
ReferencedContainer = "container:"> ReferencedContainer = "container:">
</BuildableReference> </BuildableReference>
</BuildActionEntry> </BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PHAlert"
BuildableName = "PHAlert"
BlueprintName = "PHAlert"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "PHCore"
BuildableName = "PHCore"
BlueprintName = "PHCore"
ReferencedContainer = "container:">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries> </BuildActionEntries>
</BuildAction> </BuildAction>
<TestAction <TestAction

Binary file not shown.

View File

@ -1,445 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 51;
objects = {
/* Begin PBXBuildFile section */
33E2B6CF0D9BD11D8C027DE6 /* Pods_Example.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AB925B38880FB296AF5D219F /* Pods_Example.framework */; };
CD4B40AA23017C09005111B9 /* RootVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD4B40A923017C09005111B9 /* RootVC.swift */; };
CD8BFF1823014850001E08DD /* TestToastVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFF1723014850001E08DD /* TestToastVC.swift */; };
CD8BFF1A2301485E001E08DD /* TestAlertVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFF192301485E001E08DD /* TestAlertVC.swift */; };
CD8BFF1C23014867001E08DD /* TestGuardVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFF1B23014867001E08DD /* TestGuardVC.swift */; };
CD8BFF1E230148DD001E08DD /* BaseListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFF1D230148DD001E08DD /* BaseListVC.swift */; };
CD8BFF2023014CB5001E08DD /* EmptyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8BFF1F23014CB5001E08DD /* EmptyVC.swift */; };
CDA4E03C20D3935B00CD2A0C /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA4E03B20D3935B00CD2A0C /* AppDelegate.swift */; };
CDA4E03E20D3935B00CD2A0C /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA4E03D20D3935B00CD2A0C /* ViewController.swift */; };
CDA4E04120D3935B00CD2A0C /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDA4E03F20D3935B00CD2A0C /* Main.storyboard */; };
CDA4E04320D3935C00CD2A0C /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CDA4E04220D3935C00CD2A0C /* Assets.xcassets */; };
CDA4E04620D3935C00CD2A0C /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDA4E04420D3935C00CD2A0C /* LaunchScreen.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
AB925B38880FB296AF5D219F /* Pods_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
BA1A6035F1B9A658B3BB225C /* Pods-Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.release.xcconfig"; path = "Pods/Target Support Files/Pods-Example/Pods-Example.release.xcconfig"; sourceTree = "<group>"; };
CA1298266BE89D7950DE99F2 /* Pods-Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Example.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Example/Pods-Example.debug.xcconfig"; sourceTree = "<group>"; };
CD4B40A923017C09005111B9 /* RootVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RootVC.swift; sourceTree = "<group>"; };
CD59584620E36DA8000F6427 /* Example-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Example-Bridging-Header.h"; sourceTree = "<group>"; };
CD8BFF1723014850001E08DD /* TestToastVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestToastVC.swift; sourceTree = "<group>"; };
CD8BFF192301485E001E08DD /* TestAlertVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestAlertVC.swift; sourceTree = "<group>"; };
CD8BFF1B23014867001E08DD /* TestGuardVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestGuardVC.swift; sourceTree = "<group>"; };
CD8BFF1D230148DD001E08DD /* BaseListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BaseListVC.swift; sourceTree = "<group>"; };
CD8BFF1F23014CB5001E08DD /* EmptyVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EmptyVC.swift; sourceTree = "<group>"; };
CDA4E03820D3935B00CD2A0C /* ProHUD 老项目.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ProHUD 老项目.app"; sourceTree = BUILT_PRODUCTS_DIR; };
CDA4E03B20D3935B00CD2A0C /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
CDA4E03D20D3935B00CD2A0C /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
CDA4E04020D3935B00CD2A0C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
CDA4E04220D3935C00CD2A0C /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
CDA4E04520D3935C00CD2A0C /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
CDA4E04720D3935C00CD2A0C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
CDA4E03520D3935B00CD2A0C /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
33E2B6CF0D9BD11D8C027DE6 /* Pods_Example.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
139E7589A813C8747459CA4F /* Frameworks */ = {
isa = PBXGroup;
children = (
AB925B38880FB296AF5D219F /* Pods_Example.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
6C5AB15780B2383CC5603A95 /* Pods */ = {
isa = PBXGroup;
children = (
CA1298266BE89D7950DE99F2 /* Pods-Example.debug.xcconfig */,
BA1A6035F1B9A658B3BB225C /* Pods-Example.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
CDA4E02F20D3935B00CD2A0C = {
isa = PBXGroup;
children = (
CDA4E03A20D3935B00CD2A0C /* Example */,
CDA4E03920D3935B00CD2A0C /* Products */,
6C5AB15780B2383CC5603A95 /* Pods */,
139E7589A813C8747459CA4F /* Frameworks */,
);
sourceTree = "<group>";
};
CDA4E03920D3935B00CD2A0C /* Products */ = {
isa = PBXGroup;
children = (
CDA4E03820D3935B00CD2A0C /* ProHUD 老项目.app */,
);
name = Products;
sourceTree = "<group>";
};
CDA4E03A20D3935B00CD2A0C /* Example */ = {
isa = PBXGroup;
children = (
CDA4E03B20D3935B00CD2A0C /* AppDelegate.swift */,
CD4B40A923017C09005111B9 /* RootVC.swift */,
CD8BFF1D230148DD001E08DD /* BaseListVC.swift */,
CD8BFF1F23014CB5001E08DD /* EmptyVC.swift */,
CDA4E03D20D3935B00CD2A0C /* ViewController.swift */,
CD8BFF1723014850001E08DD /* TestToastVC.swift */,
CD8BFF192301485E001E08DD /* TestAlertVC.swift */,
CD8BFF1B23014867001E08DD /* TestGuardVC.swift */,
CDA4E03F20D3935B00CD2A0C /* Main.storyboard */,
CDA4E04220D3935C00CD2A0C /* Assets.xcassets */,
CDA4E04420D3935C00CD2A0C /* LaunchScreen.storyboard */,
CDA4E04720D3935C00CD2A0C /* Info.plist */,
CD59584620E36DA8000F6427 /* Example-Bridging-Header.h */,
);
path = Example;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
CDA4E03720D3935B00CD2A0C /* Example */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDA4E04A20D3935C00CD2A0C /* Build configuration list for PBXNativeTarget "Example" */;
buildPhases = (
0FD6F25B57F7283E6523E731 /* [CP] Check Pods Manifest.lock */,
CDA4E03420D3935B00CD2A0C /* Sources */,
CDA4E03520D3935B00CD2A0C /* Frameworks */,
CDA4E03620D3935B00CD2A0C /* Resources */,
FE957B34A041E54F84E4F88C /* [CP] Embed Pods Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = Example;
productName = Example;
productReference = CDA4E03820D3935B00CD2A0C /* ProHUD 老项目.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CDA4E03020D3935B00CD2A0C /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0930;
LastUpgradeCheck = 0930;
ORGANIZATIONNAME = "Titan Studio";
TargetAttributes = {
CDA4E03720D3935B00CD2A0C = {
CreatedOnToolsVersion = 9.3;
LastSwiftMigration = 1010;
};
};
};
buildConfigurationList = CDA4E03320D3935B00CD2A0C /* Build configuration list for PBXProject "Example" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CDA4E02F20D3935B00CD2A0C;
productRefGroup = CDA4E03920D3935B00CD2A0C /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CDA4E03720D3935B00CD2A0C /* Example */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CDA4E03620D3935B00CD2A0C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDA4E04620D3935C00CD2A0C /* LaunchScreen.storyboard in Resources */,
CDA4E04320D3935C00CD2A0C /* Assets.xcassets in Resources */,
CDA4E04120D3935B00CD2A0C /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
0FD6F25B57F7283E6523E731 /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-Example-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
FE957B34A041E54F84E4F88C /* [CP] Embed Pods Frameworks */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-input-files.xcfilelist",
);
name = "[CP] Embed Pods Frameworks";
outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks-${CONFIGURATION}-output-files.xcfilelist",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Example/Pods-Example-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
CDA4E03420D3935B00CD2A0C /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CD8BFF1823014850001E08DD /* TestToastVC.swift in Sources */,
CDA4E03E20D3935B00CD2A0C /* ViewController.swift in Sources */,
CD8BFF2023014CB5001E08DD /* EmptyVC.swift in Sources */,
CD8BFF1A2301485E001E08DD /* TestAlertVC.swift in Sources */,
CD4B40AA23017C09005111B9 /* RootVC.swift in Sources */,
CDA4E03C20D3935B00CD2A0C /* AppDelegate.swift in Sources */,
CD8BFF1C23014867001E08DD /* TestGuardVC.swift in Sources */,
CD8BFF1E230148DD001E08DD /* BaseListVC.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
CDA4E03F20D3935B00CD2A0C /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
CDA4E04020D3935B00CD2A0C /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
CDA4E04420D3935C00CD2A0C /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
CDA4E04520D3935C00CD2A0C /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
CDA4E04820D3935C00CD2A0C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
CDA4E04920D3935C00CD2A0C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
CODE_SIGN_IDENTITY = "iPhone Developer";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
CDA4E04B20D3935C00CD2A0C /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = CA1298266BE89D7950DE99F2 /* Pods-Example.debug.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = Example/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.ProHUDExample;
PRODUCT_NAME = "ProHUD 老项目";
PROVISIONING_PROFILE = "b32d51a3-c20b-408f-aebf-11d2ea3811cd";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Example/Example-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Debug;
};
CDA4E04C20D3935C00CD2A0C /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = BA1A6035F1B9A658B3BB225C /* Pods-Example.release.xcconfig */;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = Example/Info.plist;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 2.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.ProHUDExample;
PRODUCT_NAME = "ProHUD 老项目";
PROVISIONING_PROFILE = "b32d51a3-c20b-408f-aebf-11d2ea3811cd";
PROVISIONING_PROFILE_SPECIFIER = "";
SWIFT_OBJC_BRIDGING_HEADER = "Example/Example-Bridging-Header.h";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = 1;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
CDA4E03320D3935B00CD2A0C /* Build configuration list for PBXProject "Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDA4E04820D3935C00CD2A0C /* Debug */,
CDA4E04920D3935C00CD2A0C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDA4E04A20D3935C00CD2A0C /* Build configuration list for PBXNativeTarget "Example" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDA4E04B20D3935C00CD2A0C /* Debug */,
CDA4E04C20D3935C00CD2A0C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = CDA4E03020D3935B00CD2A0C /* Project object */;
}

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:Example.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,78 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "1100"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CDA4E03720D3935B00CD2A0C"
BuildableName = "ProHUD &#x8001;&#x9879;&#x76ee;.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
</Testables>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CDA4E03720D3935B00CD2A0C"
BuildableName = "ProHUD &#x8001;&#x9879;&#x76ee;.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<BuildableProductRunnable
runnableDebuggingMode = "0">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "CDA4E03720D3935B00CD2A0C"
BuildableName = "ProHUD &#x8001;&#x9879;&#x76ee;.app"
BlueprintName = "Example"
ReferencedContainer = "container:Example.xcodeproj">
</BuildableReference>
</BuildableProductRunnable>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Example.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,76 +0,0 @@
//
// AppDelegate.swift
// Example
//
// Created by xaoxuu on 2018/6/15.
// Copyright © 2018 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let vc = RootVC()
window = UIWindow.init(frame: UIScreen.main.bounds)
window?.rootViewController = vc
window?.makeKeyAndVisible()
ProHUD.config { (cfg) in
//
// cfg.rootViewController = vc
cfg.alert { (a) in
// a.titleFont = .bold(22)
// a.bodyFont = .regular(17)
// a.boldTextFont = .bold(18)
// a.buttonFont = .bold(18)
a.forceQuitTimer = 5 // 便
}
// cfg.toast { (t) in
// t.titleFont = .bold(18)
// t.bodyFont = .regular(16)
// t.iconSize = .init(width: 42, height: 42)
// }
// cfg.guard { (g) in
// g.titleFont = .bold(22)
// g.subTitleFont = .bold(20)
// g.bodyFont = .regular(17)
// g.buttonFont = .bold(18)
// }
}
return true
}
func applicationWillResignActive(_ application: UIApplication) {
// Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
// Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
}
func applicationDidEnterBackground(_ application: UIApplication) {
// Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
// If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
NotificationCenter.default.post(name: NSNotification.Name.init("applicationDidEnterBackground"), object: nil)
}
func applicationWillEnterForeground(_ application: UIApplication) {
// Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
}
func applicationWillTerminate(_ application: UIApplication) {
// Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
}
}

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" systemVersion="17A277" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="EHf-IW-A2E">
<objects>
<viewController id="01J-lp-oVM" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
</document>

View File

@ -1,46 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="16097" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="ttk-4w-IeX">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="16087"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--ProHUD-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="ProHUD_老项目" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
<navigationItem key="navigationItem" title="ProHUD" id="Yzl-Q6-9v7"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1050.7246376811595" y="133.92857142857142"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="HjC-hd-4PZ">
<objects>
<navigationController automaticallyAdjustsScrollViewInsets="NO" id="ttk-4w-IeX" sceneMemberID="viewController">
<toolbarItems/>
<navigationBar key="navigationBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="juX-kz-8Ti">
<rect key="frame" x="0.0" y="44" width="414" height="44"/>
<autoresizingMask key="autoresizingMask"/>
</navigationBar>
<nil name="viewControllers"/>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="gyV-fc-5FK"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Lg9-xW-IRh" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="140.57971014492756" y="133.92857142857142"/>
</scene>
</scenes>
</document>

View File

@ -1,106 +0,0 @@
//
// BaseListVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
typealias Callback = () -> Void
struct Table {
var sections = [Section]()
mutating func addSection(title: String, callback: @escaping (inout Section) -> Void) {
var sec = Section()
sec.header = title
callback(&sec)
sections.append(sec)
}
}
struct Section {
var header = ""
var footer = ""
var rows = [Row]()
mutating func addRow(title: String, subtitle: String? = nil, callback: @escaping Callback) {
rows.append(Row(title: title, subtitle: subtitle, callback: callback))
}
}
struct Row {
var title: String
var subtitle: String?
var callback: Callback
}
class BaseListVC: UIViewController {
var ts = [[String]]()
var cs = [[Callback]]()
var vm = Table()
var secs = [Section]()
lazy var tableView: UITableView = {
let tv: UITableView
if #available(iOS 13.0, *) {
tv = UITableView(frame: .zero, style: .insetGrouped)
} else {
// Fallback on earlier versions
tv = UITableView(frame: .zero, style: .grouped)
}
return tv
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(tableView)
tableView.dataSource = self
tableView.delegate = self
tableView.snp.makeConstraints { (mk) in
mk.edges.equalToSuperview()
}
}
}
extension BaseListVC: UITableViewDataSource, UITableViewDelegate {
func numberOfSections(in tableView: UITableView) -> Int {
return vm.sections.count
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return vm.sections[section].rows.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell: UITableViewCell
if let c = tableView.dequeueReusableCell(withIdentifier: "cell") {
cell = c
} else {
cell = UITableViewCell(style: .subtitle, reuseIdentifier: "cell")
cell.textLabel?.numberOfLines = 0
cell.detailTextLabel?.textColor = .gray
cell.detailTextLabel?.numberOfLines = 0
cell.accessoryType = .disclosureIndicator
}
cell.textLabel?.text = vm.sections[indexPath.section].rows[indexPath.row].title
cell.detailTextLabel?.text = vm.sections[indexPath.section].rows[indexPath.row].subtitle
return cell
}
func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return vm.sections[section].header
}
func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
return vm.sections[section].footer
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
vm.sections[indexPath.section].rows[indexPath.row].callback()
}
}

View File

@ -1,57 +0,0 @@
//
// EmptyVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
import SnapKit
import Inspire
class EmptyVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor(white: 0.95, alpha: 1)
// Do any additional setup after loading the view.
let lb = UILabel()
lb.numberOfLines = 0
lb.text = title
lb.font = .regular(40)
view.addSubview(lb)
lb.snp.makeConstraints { (mk) in
mk.center.equalToSuperview()
mk.leading.greaterThanOrEqualToSuperview().offset(16)
mk.trailing.lessThanOrEqualToSuperview().offset(-16)
}
let btn = UIButton(type: .system)
btn.titleLabel?.font = .bold(20)
btn.setTitle("Dismiss", for: .normal)
btn.addTarget(self, action: #selector(didTappedDismiss(_:)), for: .touchUpInside)
view.addSubview(btn)
btn.snp.makeConstraints { (mk) in
mk.top.equalToSuperview().offset(Inspire.current.layout.safeAreaInsets(for: self).top)
mk.trailing.equalToSuperview().offset(-16)
mk.height.equalTo(44)
}
}
@objc func didTappedDismiss(_ sender: UIButton) {
dismiss(animated: true, completion: nil)
}
}
extension UIViewController {
func presentEmptyVC(title: String?) {
let vc = EmptyVC()
vc.title = title
present(vc, animated: true, completion: nil)
}
}

View File

@ -1,5 +0,0 @@
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

View File

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIRequiresFullScreen</key>
<false/>
<key>UIStatusBarHidden</key>
<true/>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleDefault</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View File

@ -1,88 +0,0 @@
//
// RootVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
class RootVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let vc = ViewController()
let nav = UINavigationController(rootViewController: vc)
addChild(nav)
view.addSubview(nav.view)
nav.view.frame = view.bounds
if #available(iOS 11.0, *) {
nav.navigationBar.prefersLargeTitles = true
} else {
// Fallback on earlier versions
}
}
/*
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
*/
}
extension ProHUD.Scene {
static var delete: ProHUD.Scene {
var scene = ProHUD.Scene(identifier: "prohud.delete")
scene.image = UIImage(named: "prohud.trash")
scene.title = "确认删除"
scene.message = "此操作不可撤销"
return scene
}
static var buy: ProHUD.Scene {
var scene = ProHUD.Scene(identifier: "buy")
scene.image = UIImage(named: "alert.buy")
scene.title = "确认付款"
scene.message = "一旦购买拒不退款"
return scene
}
/// loading
static var loading: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.loading.rotate")
scene.image = UIImage(named: "prohud.rainbow.circle")
scene.title = "坐和放宽"
scene.message = "正在处理一些事情"
scene.alertDuration = 0
scene.toastDuration = 0
return scene
}
static var sync: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "sync.rotate")
scene.image = UIImage(named: "prohud.rainbow.circle")
scene.title = "正在同步"
scene.alertDuration = 0
scene.toastDuration = 0
return scene
}
static var sync2: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "sync.rotate")
scene.image = UIImage(named: "prohud.rainbow.circle")
scene.alertDuration = 0
scene.toastDuration = 0
return scene
}
}

View File

@ -1,332 +0,0 @@
//
// TestAlertVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
// 2
func loadingSuccessAfter2Seconds() {
DispatchQueue.main.asyncAfter(deadline: .now()+2) {
Alert.find("loading") { (a) in
a.update { (vm) in
vm.scene = .success
vm.title = "同步成功"
vm.message = nil
}
}
}
}
func updateProgress(callback: @escaping (CGFloat) -> Void) {
let s = DispatchSemaphore(value: 1)
DispatchQueue.global().async {
for i in 0 ... 100 {
s.wait()
DispatchQueue.main.async {
callback(CGFloat(i)/100)
DispatchQueue.main.asyncAfter(deadline: .now()+0.03) {
s.signal()
}
}
}
}
}
class TestAlertVC: BaseListVC {
override func viewDidLoad() {
super.viewDidLoad()
vm.addSection(title: "最简单的写法") { (sec) in
sec.addRow(title: "Alert.push(scene: .loading)") {
Alert.push(scene: .loading)
}
sec.addRow(title: "Alert.push(scene: .success)") {
Alert.push(scene: .success)
}
sec.addRow(title: "Alert.push(scene: .warning)") {
Alert.push(scene: .warning)
}
sec.addRow(title: "Alert.push(scene: .error)") {
Alert.push(scene: .error)
}
sec.addRow(title: "Alert.push(scene: .failure)") {
Alert.push(scene: .failure)
}
sec.footer = "这些是自带的场景,可以重写已有场景,或者扩展新的场景。"
}
vm.addSection(title: "常用示例") { (sec) in
// MARK: 1
sec.addRow(title: "正在同步写法1", subtitle: "创建的时候就布局好了。") {
Alert.push("loading", scene: .sync2) { (vc) in
vc.update { (vm) in
vm.title = "正在同步"
}
}
loadingSuccessAfter2Seconds()
}
// MARK: 2
sec.addRow(title: "正在同步写法2", subtitle: "创建的时候没有布局完,发出去之后再更新布局。") {
Alert.push("loading", scene: .sync2)
loadingSuccessAfter2Seconds()
//
Alert.find("loading") { (vc) in
vc.update { (vm) in
vm.title = "正在同步"
}
}
}
// MARK:
sec.addRow(title: "正在同步(有进度显示)") {
Alert.push("progress", scene: .sync) { (a) in
a.update(progress: 0)
updateProgress { (pct) in
a.update(progress: pct)
if pct >= 1 {
DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {
a.update { (vm) in
vm.scene = .success
vm.title = "同步成功"
vm.message = nil
}
}
}
}
}
}
// MARK:
sec.addRow(title: "同步失败和重试(布局变化)", subtitle: "添加、删除按钮使得窗口大小发生了变化。") {
Alert.push("loading", scene: .loading)
func loading() {
Alert.find("loading") { (a) in
a.update { (vm) in
vm.scene = .loading
vm.title = "正在同步"
vm.message = "请稍等片刻"
vm.remove(action: 0, 1)
}
a.startRotate()
DispatchQueue.main.asyncAfter(deadline: .now()+2) {
a.update { (vm) in
vm.scene = .error
vm.title = "同步失败"
vm.message = "请检查网络是否通畅"
vm.add(action: .default, title: "重试") {
loading()
}
vm.add(action: .cancel, title: "取消", handler: nil)
}
}
}
}
loading()
}
// MARK:
sec.addRow(title: "自定义要旋转的图片", subtitle: "添加了自定义视图,在更新的时候记得要视情况移除。") {
Alert.push(scene: .privacy, title: "正在授权") { (vc) in
vc.identifier = "loading"
let imgv = UIImageView(image: UIImage(named: "prohud.rainbow.circle"))
vc.imageView.addSubview(imgv)
imgv.tag = 1
imgv.snp.makeConstraints { (mk) in
mk.center.equalToSuperview()
mk.width.height.equalTo(18)
}
vc.startRotate(imgv.layer, speed: 4)
vc.vm.duration = 0
}
DispatchQueue.main.asyncAfter(deadline: .now() + 4) {
Alert.find("loading") { (vc) in
vc.imageView.viewWithTag(1)?.removeFromSuperview()
vc.update { (vm) in
vm.scene = .success
vm.title = "授权成功"
vm.duration = 1
}
}
}
}
sec.footer = "写法1和写法2动画效果略微不同"
}
vm.addSection(title: "为了解决代码逻辑疏漏导致程序卡死、弹窗重叠等问题") { (sec) in
// MARK:
sec.addRow(title: "极端场景:正在同步(超时未处理)", subtitle: "超时未处理的意外情况弹窗可以手动关闭。在config中配置所需时间") {
Alert.push(scene: .loading, title: "坐和放宽", message: "我们正在帮你搞定一切") { (a) in
a.identifier = "loading"
a.startRotate()
a.didForceQuit {
Toast.push(scene: .default, title: "点击了强制关闭", message: "您可以处理超时事件")
}
}
}
// MARK:
sec.addRow(title: "极端场景:短时间内调用了多次同一个弹窗", subtitle: "多次调用页面弹窗应该是毫无变化的。本例中4秒内调用了6次") {
func loading(_ index: Int = 1) {
if Alert.find("loading").count == 0 {
Alert.push("loading", scene: .loading) { (a) in
a.update { (vm) in
vm.title = "正在加载"
}
a.startRotate()
}
}
}
loading(1)
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
loading(2)
}
DispatchQueue.main.asyncAfter(deadline: .now()+2) {
loading(3)
}
DispatchQueue.main.asyncAfter(deadline: .now()+3) {
loading(4)
}
DispatchQueue.main.asyncAfter(deadline: .now()+3.5) {
loading(5)
}
DispatchQueue.main.asyncAfter(deadline: .now()+4) {
loading(6)
}
DispatchQueue.main.asyncAfter(deadline: .now()+4.5) {
Alert.push("loading", scene: .success) { (a) in
a.update { (vm) in
vm.scene = .success
vm.title = "测试结束"
}
}
}
}
// MARK:
sec.addRow(title: "极端场景:多个不同的弹窗重叠", subtitle: "多个弹窗不得不重叠的时候ProHUD的景深处理可以使其看起来舒服一些。") {
func a() {
Alert.push("a", scene: .default) { (a) in
a.update { (vm) in
vm.title = "Windows 10"
vm.message = "Windows 10不是為所有人設計,而是為每個人設計"
vm.icon = UIImage(named: "prohud.windmill")
vm.duration = 0
}
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
b()
}
}
}
func b() {
Alert.push("b", scene: .warning) { (a) in
a.update { (vm) in
vm.title = "Windows 10"
vm.message = "不要说我们没有警告过你"
vm.duration = 0
}
}
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
c()
}
}
func c() {
Alert.push("c", scene: .message) { (a) in
a.update { (vm) in
vm.title = "Windows 10"
vm.message = "我们都有不顺利的时候"
vm.duration = 0
}
}
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
d()
}
}
func d() {
Alert.push("d", scene: .loading) { (a) in
a.update { (vm) in
vm.title = "Windows 10"
vm.message = "正在处理一些事情"
vm.duration = 0
}
}
DispatchQueue.main.asyncAfter(deadline: .now()+3) {
e()
}
}
func e() {
Alert.push("e", scene: .failure) { (a) in
a.update { (vm) in
vm.title = "更新失败"
vm.message = "*回到以前的版本"
vm.add(action: .default, title: "好的") {
Alert.pop("e")
DispatchQueue.main.asyncAfter(deadline: .now()+0.3) {
Alert.pop("d")
}
DispatchQueue.main.asyncAfter(deadline: .now()+0.6) {
Alert.pop("c")
}
DispatchQueue.main.asyncAfter(deadline: .now()+0.9) {
Alert.pop("b")
}
DispatchQueue.main.asyncAfter(deadline: .now()+1.2) {
Alert.pop("a")
}
}
}
}
}
a()
}
}
vm.addSection(title: "") { (sec) in
// MARK:
sec.addRow(title: "测试较长的标题和内容") {
Alert.push() { (a) in
a.update { (vm) in
vm.scene = .confirm
vm.title = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.message = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.add(action: .default, title: "我知道了", handler: nil)
}
}
}
// MARK:
sec.addRow(title: "测试特别长的标题和内容", subtitle: "这种情况编码阶段就可以避免,所以没有做特别处理,请控制内容长度不要过长。") {
Alert.push() { (a) in
a.update { (vm) in
vm.scene = .warning
vm.title = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.message = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来 的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.add(action: .default, title: "我知道了", handler: nil)
}
}
}
// MARK:
sec.addRow(title: "只有标题") {
Alert.push(scene: .message, title: "这是标题")
}
// MARK:
sec.addRow(title: "只有消息") {
Alert.push(scene: .message, message: "这是消息")
}
// MARK:
sec.addRow(title: "既没有标题也没有消息") {
Alert.push()
}
}
}
}

View File

@ -1,188 +0,0 @@
//
// TestGuardVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
import Inspire
import WebKit
class TestGuardVC: BaseListVC {
override func viewDidLoad() {
super.viewDidLoad()
vm.addSection(title: "简单使用") { (sec) in
// MARK:
sec.addRow(title: "示例:删除菜单") {
Guard.push("del") { (vc) in
vc.update { (vm) in
vm.add(action: .destructive, title: "删除") { [weak vc] in
Alert.push(scene: .delete) { (vc) in
vc.update { (vm) in
vm.add(action: .destructive, title: "删除") { [weak vc] in
vc?.pop()
}
vm.add(action: .cancel, title: "取消", handler: nil)
}
}
vc?.pop()
}
vm.add(action: .cancel, title: "取消", handler: nil)
}
}
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
Guard.find("del") { vc in
vc.pop()
}
}
}
// MARK:
sec.addRow(title: "示例:升级至专业版") {
// id
Guard.push("pro") { (vc) in
vc.identifier = "pro"
vc.update { (vm) in
vm.add(title: "升级至专业版")
vm.add(subTitle: "解锁功能")
vm.add(message: "功能1功能2...")
vm.add(subTitle: "价格")
vm.add(message: "只需一次性付费$2999即可永久享用。")
vm.add(action: .destructive, title: "购买") { [weak vc] in
Alert.push(scene: .buy) { (vc) in
vc.identifier = "confirm"
vc.update { (vm) in
vm.add(action: .destructive, title: "购买") { [weak vc] in
vc?.update({ (vm) in
vm.scene = .loading
vm.title = "正在付款"
vm.message = "请稍等片刻"
vm.remove(action: 0, 1)
})
vc?.startRotate()
DispatchQueue.main.asyncAfter(deadline: .now()+1) {
vc?.update({ (vm) in
vm.scene = .success
vm.title = "购买成功"
vm.message = "感谢您的支持"
vm.add(action: .default, title: "我知道了") {
vc?.pop()
}
})
}
}
vm.add(action: .cancel, title: "取消", handler: nil)
}
}
vc?.pop()
}
vm.add(action: .cancel, title: "取消", handler: nil)
}
}
}
}
vm.addSection(title: "添加自定义视图") { (sec) in
// MARK:
sec.addRow(title: "示例:修改背景蒙版", subtitle: "很方便地添加自定义控件") {
Guard.push() { (vc) in
if #available(iOS 13.0, *) {
let imgv = UIImageView(image: UIImage(systemName: "photo.fill.on.rectangle.fill"))
vc.textStack.addArrangedSubview(imgv)
imgv.contentMode = .scaleAspectFit
imgv.snp.makeConstraints { (mk) in
mk.height.equalTo(80)
}
} else {
// Fallback on earlier versions
}
//
vc.vm.add(title: "背景蒙版")
//
vc.vm.add(subTitle: "选择一种模糊效果")
//
let seg = UISegmentedControl(items: ["extraLight", "light", "dark", "none"])
seg.selectedSegmentIndex = 1
vc.textStack.addArrangedSubview(seg)
seg.snp.makeConstraints { (mk) in
mk.height.equalTo(40)
}
//
vc.vm.add(subTitle: "设置蒙版透明度")
//
let slider = UISlider()
slider.minimumValue = 0
slider.maximumValue = 100
slider.value = 100
vc.textStack.addArrangedSubview(slider)
slider.snp.makeConstraints { (mk) in
mk.height.equalTo(40)
}
//
vc.vm.add(action: .default, title: "OK") { [weak vc] in
vc?.pop()
}
}
}
// MARK:
sec.addRow(title: "示例:弹出隐私协议页面", subtitle: "也可以完全控制整个页面") {
Guard.push("license") { (vc) in
//
vc.isFullScreen = true
//
vc.vm.add(title: "隐私协议").snp.makeConstraints { (mk) in
mk.height.equalTo(44)
}
//
let web = WKWebView.init(frame: .zero)
web.layer.masksToBounds = true
web.layer.cornerRadius = ProHUD.shared.config.guard.buttonCornerRadius
web.scrollView.showsHorizontalScrollIndicator = false
if let url = URL(string: "https://xaoxuu.com/wiki/prohud/") {
web.load(URLRequest(url: url))
}
vc.textStack.addArrangedSubview(web)
web.snp.makeConstraints { (mk) in
mk.leading.trailing.equalToSuperview()
}
//
vc.vm.add(message: "请认真阅读以上内容,当您阅读完毕并同意协议内容时点击接受按钮。")
//
vc.vm.add(action: .default, title: "接受") { [weak vc] in
vc?.pop()
}
}
}
}
vm.addSection(title: "对比效果") { (sec) in
// MARK: ActionSheet
sec.addRow(title: "对比原生的ActionSheet") {
let ac = UIAlertController(title: "Title", message: "message", preferredStyle: .actionSheet)
let ok = UIAlertAction(title: "OK", style: .default, handler: nil)
let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
ac.addAction(ok)
ac.addAction(cancel)
ac.popoverPresentationController?.sourceView = self.view
self.present(ac, animated: true, completion: nil)
}
// MARK: Present
sec.addRow(title: "对比原生Present效果") {
let vc = UIViewController()
vc.view.backgroundColor = .white
vc.title = "ceshi"
self.present(vc, animated: true, completion: nil)
}
}
}
}

View File

@ -1,240 +0,0 @@
//
// TestToastVC.swift
// Example
//
// Created by xaoxuu on 2019/8/12.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
// 15
func loadingSuccessAfter15Seconds() {
DispatchQueue.main.asyncAfter(deadline: .now() + 15) {
Toast.find("loading") { (a) in
a.update { (vm) in
vm.scene = .success
vm.title = "同步成功"
vm.message = "啊哈哈哈哈哈哈哈哈"
}
}
}
}
class TestToastVC: BaseListVC {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
vm.addSection(title: "简单的例子") { (sec) in
// MARK: Hello World
sec.addRow(title: "Hello World") {
Toast.push(title: "Hello World", message: "This is a test message from ProHUD.")
}
// MARK:
sec.addRow(title: "场景:正在加载(没有进度显示)") {
Toast.push(scene: .loading).startRotate()
loadingSuccessAfter15Seconds()
}
// MARK:
sec.addRow(title: "场景:正在加载(有进度显示)") {
if Toast.find("progress").count == 0 {
Toast.push("progress", scene: .loading) { (t) in
t.update { (vm) in
vm.title = "笑容正在加载"
vm.message = "这通常不会太久"
}
t.startRotate()
t.update(progress: 0)
updateProgress { (pct) in
t.update(progress: pct)
if pct >= 1 {
DispatchQueue.main.asyncAfter(deadline: .now()+0.5) {
t.update { (vm) in
vm.scene = .success
vm.icon = UIImage(named: "Feel1")
vm.title = "加载成功"
vm.message = "阿哈哈哈哈.jpg"
}
}
}
}
}
}
}
// MARK:
sec.addRow(title: "场景:同步成功") {
let t = Toast.push(scene: .success, title: "同步成功", message: "点击查看详情")
t.didTapped { [weak self, weak t] in
self?.presentEmptyVC(title: "详情")
t?.pop()
}
}
// MARK:
sec.addRow(title: "场景:同步失败") {
Toast.push(scene: .error, title: "同步失败", message: "请稍后重试。点击查看详情") { (vc) in
vc.update { (vm) in
vm.duration = 0
}
vc.didTapped { [weak self, weak vc] in
self?.presentEmptyVC(title: "这是错误详情")
vc?.pop()
}
}
}
// MARK:
sec.addRow(title: "场景:设备电量过低", subtitle: "这条消息正文部分显示多行") {
Toast.push(scene: .warning, title: "设备电量过低", message: "请及时对设备进行充电,以免影响使用。\n为了您的续航,我们已经为您限制了设备的峰值性能。") { (vc) in
vc.vm.duration = 0
}
}
}
vm.addSection(title: "实用的例子") { (sec) in
// MARK:
sec.addRow(title: "避免重复发布同一条信息 (id=aaa)", subtitle: "为一个实例指定 identifier 可以避免重复出现。") {
Toast.push("aaa") { (vc) in
vc.update { (vm) in
vm.scene = .warning
vm.message = "这则消息不会同时出现在多条横幅中。"
vm.duration = 0
}
vc.pulse()
}
}
// MARK: identifier
sec.addRow(title: "根据 identifier 查找并修改实例 (id=aaa)", subtitle: "在本例中,如果找不到就不进行处理。") {
// push -> find
Toast.find("aaa") { (t) in
t.update { (vm) in
vm.scene = .success
vm.title = "找到了哈哈"
vm.message = "根据 identifier 查找并修改实例"
vm.duration = 0
}
t.pulse()
}
}
// MARK:
sec.addRow(title: "传入指定图标", subtitle: "虽然您对实例具有有完全的自由,但是更建议提前在场景中设置好对应的图片。") {
Toast.push(scene: .default, title: "传入指定图标测试", message: "这是消息内容") { (vc) in
vc.update { (vm) in
if #available(iOS 13.0, *) {
vc.imageView.tintColor = .brown
vm.icon = UIImage(systemName: "icloud.and.arrow.down")
} else {
vm.icon = UIImage(named: "icloud.and.arrow.down")
}
}
}
}
// MARK:
sec.addRow(title: "禁止手势移除", subtitle: "常用于优先级低但是必须用户处理的事件。") {
Toast.push(scene: .default, title: "禁止手势移除", message: "这条消息无法通过向上滑动移出屏幕。5秒后自动消失每次拖拽都会刷新倒计时。") { (vc) in
vc.isRemovable = false
vc.update { (vm) in
vm.duration = 5
}
}
}
// MARK: 使
sec.addRow(title: "和弹窗组合使用示例", subtitle: "如果有一个横幅消息需要用户做出选择怎么办?可以点击的时候弹出一个弹窗来。") {
Toast.push(scene: .message, title: "好友邀请", message: "你收到一条好友邀请,点击查看详情。", duration: 10) { (vc) in
vc.identifier = "xxx"
vc.didTapped { [weak vc] in
vc?.pop()
Alert.push(scene: .confirm, title: "好友邀请", message: "用户xxx想要添加你为好友是否同意") { (vc) in
vc.update { (vm) in
vm.add(action: .default, title: "接受") { [weak vc] in
vc?.pop()
Toast.push(scene: .success, title: "好友添加成功", message: "这是消息内容")
}
vm.add(action: .cancel, title: "拒绝") {
}
}
}
}
}
}
// MARK:
sec.addRow(title: "自定义要旋转的图片", subtitle: "添加了自定义视图,在更新的时候记得要视情况移除。") {
Toast.push(scene: .privacy, title: "正在授权", message: "请稍等片刻") { (t) in
t.identifier = "loading"
let imgv = UIImageView(image: UIImage(named: "prohud.rainbow.circle"))
t.imageView.addSubview(imgv)
imgv.tag = 1
imgv.snp.makeConstraints { (mk) in
mk.center.equalToSuperview()
mk.width.height.equalTo(18)
}
t.startRotate(imgv.layer, speed: 4)
t.vm.duration = 0
}
DispatchQueue.main.asyncAfter(deadline: .now() + 5) {
Toast.find("loading") { (a) in
a.imageView.viewWithTag(1)?.removeFromSuperview()
a.update { (vm) in
vm.scene = .success
vm.title = "授权成功"
vm.message = "啊哈哈哈哈哈哈哈哈"
}
}
}
}
}
vm.addSection(title: "极端场景") { (sec) in
// MARK:
sec.addRow(title: "测试较长的标题和内容") {
Toast.push() { (a) in
a.update { (vm) in
vm.title = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.message = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
}
}
}
// MARK:
sec.addRow(title: "测试特别长的标题和内容", subtitle: "可以在配置中设置 titleMaxLines/bodyMaxLines 来避免出现这种情况。") {
Toast.push() { (a) in
a.update { (vm) in
vm.title = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
vm.message = "正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过正在同步看到了你撒地方快乐撒的肌肤轮廓啊就是;来的跨省的人格人格离开那地方离开过"
}
}
}
// MARK:
sec.addRow(title: "只有标题部分的效果", subtitle: "这种情况请控制文字不要太少,否则不美观。") {
Toast.push() { (a) in
a.update { (vm) in
vm.title = "坐和放宽,我们正在帮你搞定一切,这通常不会太久。"
}
}
}
// MARK:
sec.addRow(title: "只有正文部分的效果", subtitle: "这种情况请控制文字不要太少,否则不美观。") {
Toast.push() { (a) in
a.update { (vm) in
vm.message = "坐和放宽,我们正在帮你搞定一切,这通常不会太久。\n不幸的是,它花费的时间比通常要长。"
}
}
}
}
}
}

View File

@ -1,91 +0,0 @@
//
// ViewController.swift
// Example
//
// Created by xaoxuu on 2018/6/15.
// Copyright © 2018 Titan Studio. All rights reserved.
//
import UIKit
import ProHUD
import SnapKit
import WebKit
class ViewController: BaseListVC {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
title = "\(Bundle.main.infoDictionary?["CFBundleName"] ?? "ProHUD")"
vm.addSection(title: "测试项目") { (sec) in
sec.addRow(title: "Toast", subtitle: "横幅控件,支持图片、标题和正文。\n不支持添加按钮,但可以接受一个点击事件。") {
let vc = TestToastVC()
vc.title = "Toast"
self.navigationController?.pushViewController(vc, animated: true)
}
sec.addRow(title: "Alert", subtitle: "弹窗控件,支持图片、标题、正文和按钮。\n按钮不设置事件回调时可以自动pop。") {
let vc = TestAlertVC()
vc.title = "Alert"
self.navigationController?.pushViewController(vc, animated: true)
}
sec.addRow(title: "Guard", subtitle: "操作表控件,原生支持标题、副标题、正文和按钮,也可以添加任意视图。") {
let vc = TestGuardVC()
vc.title = "Guard"
self.navigationController?.pushViewController(vc, animated: true)
}
}
vm.addSection(title: "小提示") { (sec) in
sec.addRow(title: "所有控件都是ViewController", subtitle: "可以监听进入、离开移除事件。\n推入、推出统一为 push/pop 操作。\n所有控件都可以在配置中完全自定义布局及样式。\n通过 identifier 来获取实例,方便进行多实例管理") {
}
sec.addRow(title: "基于场景的应用", subtitle: "一个场景就是一套模板,原生提供了一些常用场景,您可以覆写,也可以新建场景。\n在场景中可以指定持续时间、标题、图标、正文等数据。") {
}
sec.addRow(title: "样式与逻辑分离", subtitle: "您可以在场景中指定一些规则,也可以在配置中完全自定义布局样式。\n在使用的时候呢,只需要确定数据即可。") {
}
sec.addRow(title: "Loading图片旋转", subtitle: "可以通过调用 .startRotate() 并可传入适当参数来旋转,也可以自定义场景\n如果场景的 identifier 包含 .rotate 则会自动旋转图片") {
}
sec.addRow(title: "按钮默认行为", subtitle: "为了灵活性default 和 destructive 按钮默认不会对实例进行 pop 操作,但是如果它们没有实现回调事件,则会自动 pop。cancel 按钮永远会自动 pop。") {
}
sec.addRow(title: "持续时间", subtitle: "设置 duration 来指定持续时间,设置为 0 可以永久持续。\n原生提供的 loading 场景持续时间为永久。\n如果弹窗添加了按钮,则持续时间会自动变成永久,除非手动设置。") {
}
sec.addRow(title: "支持深色模式", subtitle: "切换一下模式看看") {
}
}
vm.addSection(title: "更多") { (sec) in
sec.addRow(title: "查看在线文档", subtitle: "https://xaoxuu.com/wiki/prohud/") {
Guard.push("license") { (vc) in
//
vc.isFullScreen = true
//
vc.vm.add(title: "ProHUD").snp.makeConstraints { (mk) in
mk.height.equalTo(44)
}
//
let web = WKWebView.init(frame: .zero)
web.layer.masksToBounds = true
web.layer.cornerRadius = ProHUD.shared.config.guard.buttonCornerRadius
web.scrollView.showsHorizontalScrollIndicator = false
if let url = URL(string: "https://xaoxuu.com/wiki/prohud/") {
web.load(URLRequest(url: url))
}
vc.textStack.addArrangedSubview(web)
web.snp.makeConstraints { (mk) in
mk.leading.trailing.equalToSuperview()
}
//
vc.vm.add(action: .default, title: "关闭") { [weak vc] in
vc?.pop()
}
}
}
}
}
}

View File

@ -1,16 +0,0 @@
platform :ios, '10.0'
use_frameworks!
target 'Example' do
pod 'ProHUD', :path => '..'
pod 'SnapKit', '5.0.0'
pod 'Inspire', :path => '../../Inspire'
end
#pod install --verbose --no-repo-update #安装命令
#pod update --verbose --no-repo-update #更新命令

View File

@ -1,30 +0,0 @@
PODS:
- Inspire (2.1.0)
- ProHUD (1.0):
- Inspire
- SnapKit (= 5.0)
- SnapKit (5.0.0)
DEPENDENCIES:
- Inspire (from `../../Inspire`)
- ProHUD (from `..`)
- SnapKit (= 5.0.0)
SPEC REPOS:
trunk:
- SnapKit
EXTERNAL SOURCES:
Inspire:
:path: "../../Inspire"
ProHUD:
:path: ".."
SPEC CHECKSUMS:
Inspire: 087dce1e4ff902d26d79bd3453352af09411c172
ProHUD: 7128b55036885ac4f8b4d0b0783ee6f8eb3a2ea9
SnapKit: fd22d10eb9aff484d79a8724eab922c1ddf89bcf
PODFILE CHECKSUM: 80148eec6ba2e9631b208c7b277316b6c551afc4
COCOAPODS: 1.10.1

View File

@ -1,4 +0,0 @@
# 使用 AppDelegate 的项目

View File

@ -1,663 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
CDD85460249CD681004BCE22 /* TestGuardVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD85458249CD681004BCE22 /* TestGuardVC.swift */; };
CDD85461249CD681004BCE22 /* BaseListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD85459249CD681004BCE22 /* BaseListVC.swift */; };
CDD85462249CD681004BCE22 /* EmptyVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD8545A249CD681004BCE22 /* EmptyVC.swift */; };
CDD85463249CD681004BCE22 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CDD8545B249CD681004BCE22 /* Assets.xcassets */; };
CDD85464249CD681004BCE22 /* RootVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD8545C249CD681004BCE22 /* RootVC.swift */; };
CDD85465249CD681004BCE22 /* TestToastVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD8545D249CD681004BCE22 /* TestToastVC.swift */; };
CDD85466249CD681004BCE22 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD8545E249CD681004BCE22 /* ViewController.swift */; };
CDD85467249CD681004BCE22 /* TestAlertVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDD8545F249CD681004BCE22 /* TestAlertVC.swift */; };
CDF2C8E1249722F800C81274 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF2C8E0249722F800C81274 /* AppDelegate.swift */; };
CDF2C8E3249722F800C81274 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF2C8E2249722F800C81274 /* SceneDelegate.swift */; };
CDF2C8E8249722F800C81274 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDF2C8E6249722F800C81274 /* Main.storyboard */; };
CDF2C8ED249722F900C81274 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CDF2C8EB249722F900C81274 /* LaunchScreen.storyboard */; };
CDF2C8F8249722F900C81274 /* Example_Xcode11Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF2C8F7249722F900C81274 /* Example_Xcode11Tests.swift */; };
CDF2C903249722F900C81274 /* Example_Xcode11UITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF2C902249722F900C81274 /* Example_Xcode11UITests.swift */; };
CDF2C9152497237300C81274 /* Inspire in Frameworks */ = {isa = PBXBuildFile; productRef = CDF2C9142497237300C81274 /* Inspire */; };
CDF2C94A2497577C00C81274 /* ProHUD in Frameworks */ = {isa = PBXBuildFile; productRef = CDF2C9492497577C00C81274 /* ProHUD */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
CDF2C8F4249722F900C81274 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CDF2C8D5249722F800C81274 /* Project object */;
proxyType = 1;
remoteGlobalIDString = CDF2C8DC249722F800C81274;
remoteInfo = "Example-Xcode11";
};
CDF2C8FF249722F900C81274 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CDF2C8D5249722F800C81274 /* Project object */;
proxyType = 1;
remoteGlobalIDString = CDF2C8DC249722F800C81274;
remoteInfo = "Example-Xcode11";
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
CDD85458249CD681004BCE22 /* TestGuardVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TestGuardVC.swift; path = "../../Example-Old/Example/TestGuardVC.swift"; sourceTree = "<group>"; };
CDD85459249CD681004BCE22 /* BaseListVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = BaseListVC.swift; path = "../../Example-Old/Example/BaseListVC.swift"; sourceTree = "<group>"; };
CDD8545A249CD681004BCE22 /* EmptyVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = EmptyVC.swift; path = "../../Example-Old/Example/EmptyVC.swift"; sourceTree = "<group>"; };
CDD8545B249CD681004BCE22 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = "../../Example-Old/Example/Assets.xcassets"; sourceTree = "<group>"; };
CDD8545C249CD681004BCE22 /* RootVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RootVC.swift; path = "../../Example-Old/Example/RootVC.swift"; sourceTree = "<group>"; };
CDD8545D249CD681004BCE22 /* TestToastVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TestToastVC.swift; path = "../../Example-Old/Example/TestToastVC.swift"; sourceTree = "<group>"; };
CDD8545E249CD681004BCE22 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = ViewController.swift; path = "../../Example-Old/Example/ViewController.swift"; sourceTree = "<group>"; };
CDD8545F249CD681004BCE22 /* TestAlertVC.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = TestAlertVC.swift; path = "../../Example-Old/Example/TestAlertVC.swift"; sourceTree = "<group>"; };
CDF2C8DD249722F800C81274 /* ProHUD Demo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "ProHUD Demo.app"; sourceTree = BUILT_PRODUCTS_DIR; };
CDF2C8E0249722F800C81274 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
CDF2C8E2249722F800C81274 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
CDF2C8E7249722F800C81274 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
CDF2C8EC249722F900C81274 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
CDF2C8EE249722F900C81274 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CDF2C8F3249722F900C81274 /* Example-Xcode11Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Example-Xcode11Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
CDF2C8F7249722F900C81274 /* Example_Xcode11Tests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Example_Xcode11Tests.swift; sourceTree = "<group>"; };
CDF2C8F9249722F900C81274 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CDF2C8FE249722F900C81274 /* Example-Xcode11UITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Example-Xcode11UITests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
CDF2C902249722F900C81274 /* Example_Xcode11UITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Example_Xcode11UITests.swift; sourceTree = "<group>"; };
CDF2C904249722F900C81274 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
CDF2C8DA249722F800C81274 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CDF2C94A2497577C00C81274 /* ProHUD in Frameworks */,
CDF2C9152497237300C81274 /* Inspire in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8F0249722F900C81274 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8FB249722F900C81274 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
CDF2C8D4249722F800C81274 = {
isa = PBXGroup;
children = (
CDF2C8DF249722F800C81274 /* Example-Xcode11 */,
CDF2C8F6249722F900C81274 /* Example-Xcode11Tests */,
CDF2C901249722F900C81274 /* Example-Xcode11UITests */,
CDF2C8DE249722F800C81274 /* Products */,
);
sourceTree = "<group>";
};
CDF2C8DE249722F800C81274 /* Products */ = {
isa = PBXGroup;
children = (
CDF2C8DD249722F800C81274 /* ProHUD Demo.app */,
CDF2C8F3249722F900C81274 /* Example-Xcode11Tests.xctest */,
CDF2C8FE249722F900C81274 /* Example-Xcode11UITests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
CDF2C8DF249722F800C81274 /* Example-Xcode11 */ = {
isa = PBXGroup;
children = (
CDF2C8E0249722F800C81274 /* AppDelegate.swift */,
CDF2C8E2249722F800C81274 /* SceneDelegate.swift */,
CDD8545B249CD681004BCE22 /* Assets.xcassets */,
CDD85459249CD681004BCE22 /* BaseListVC.swift */,
CDD8545A249CD681004BCE22 /* EmptyVC.swift */,
CDD8545C249CD681004BCE22 /* RootVC.swift */,
CDD8545F249CD681004BCE22 /* TestAlertVC.swift */,
CDD85458249CD681004BCE22 /* TestGuardVC.swift */,
CDD8545D249CD681004BCE22 /* TestToastVC.swift */,
CDD8545E249CD681004BCE22 /* ViewController.swift */,
CDF2C8E6249722F800C81274 /* Main.storyboard */,
CDF2C8EB249722F900C81274 /* LaunchScreen.storyboard */,
CDF2C8EE249722F900C81274 /* Info.plist */,
);
path = "Example-Xcode11";
sourceTree = "<group>";
};
CDF2C8F6249722F900C81274 /* Example-Xcode11Tests */ = {
isa = PBXGroup;
children = (
CDF2C8F7249722F900C81274 /* Example_Xcode11Tests.swift */,
CDF2C8F9249722F900C81274 /* Info.plist */,
);
path = "Example-Xcode11Tests";
sourceTree = "<group>";
};
CDF2C901249722F900C81274 /* Example-Xcode11UITests */ = {
isa = PBXGroup;
children = (
CDF2C902249722F900C81274 /* Example_Xcode11UITests.swift */,
CDF2C904249722F900C81274 /* Info.plist */,
);
path = "Example-Xcode11UITests";
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
CDF2C8DC249722F800C81274 /* Example-Xcode11 */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDF2C907249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11" */;
buildPhases = (
CDF2C8D9249722F800C81274 /* Sources */,
CDF2C8DA249722F800C81274 /* Frameworks */,
CDF2C8DB249722F800C81274 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = "Example-Xcode11";
packageProductDependencies = (
CDF2C9142497237300C81274 /* Inspire */,
CDF2C9492497577C00C81274 /* ProHUD */,
);
productName = "Example-Xcode11";
productReference = CDF2C8DD249722F800C81274 /* ProHUD Demo.app */;
productType = "com.apple.product-type.application";
};
CDF2C8F2249722F900C81274 /* Example-Xcode11Tests */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDF2C90A249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11Tests" */;
buildPhases = (
CDF2C8EF249722F900C81274 /* Sources */,
CDF2C8F0249722F900C81274 /* Frameworks */,
CDF2C8F1249722F900C81274 /* Resources */,
);
buildRules = (
);
dependencies = (
CDF2C8F5249722F900C81274 /* PBXTargetDependency */,
);
name = "Example-Xcode11Tests";
productName = "Example-Xcode11Tests";
productReference = CDF2C8F3249722F900C81274 /* Example-Xcode11Tests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
CDF2C8FD249722F900C81274 /* Example-Xcode11UITests */ = {
isa = PBXNativeTarget;
buildConfigurationList = CDF2C90D249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11UITests" */;
buildPhases = (
CDF2C8FA249722F900C81274 /* Sources */,
CDF2C8FB249722F900C81274 /* Frameworks */,
CDF2C8FC249722F900C81274 /* Resources */,
);
buildRules = (
);
dependencies = (
CDF2C900249722F900C81274 /* PBXTargetDependency */,
);
name = "Example-Xcode11UITests";
productName = "Example-Xcode11UITests";
productReference = CDF2C8FE249722F900C81274 /* Example-Xcode11UITests.xctest */;
productType = "com.apple.product-type.bundle.ui-testing";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CDF2C8D5249722F800C81274 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1150;
LastUpgradeCheck = 1150;
ORGANIZATIONNAME = xaoxuu;
TargetAttributes = {
CDF2C8DC249722F800C81274 = {
CreatedOnToolsVersion = 11.5;
};
CDF2C8F2249722F900C81274 = {
CreatedOnToolsVersion = 11.5;
TestTargetID = CDF2C8DC249722F800C81274;
};
CDF2C8FD249722F900C81274 = {
CreatedOnToolsVersion = 11.5;
TestTargetID = CDF2C8DC249722F800C81274;
};
};
};
buildConfigurationList = CDF2C8D8249722F800C81274 /* Build configuration list for PBXProject "Example-Xcode11" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CDF2C8D4249722F800C81274;
packageReferences = (
CDF2C9132497237300C81274 /* XCRemoteSwiftPackageReference "Inspire" */,
CDF2C9482497577C00C81274 /* XCRemoteSwiftPackageReference "ProHUD" */,
);
productRefGroup = CDF2C8DE249722F800C81274 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CDF2C8DC249722F800C81274 /* Example-Xcode11 */,
CDF2C8F2249722F900C81274 /* Example-Xcode11Tests */,
CDF2C8FD249722F900C81274 /* Example-Xcode11UITests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CDF2C8DB249722F800C81274 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDF2C8ED249722F900C81274 /* LaunchScreen.storyboard in Resources */,
CDD85463249CD681004BCE22 /* Assets.xcassets in Resources */,
CDF2C8E8249722F800C81274 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8F1249722F900C81274 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8FC249722F900C81274 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
CDF2C8D9249722F800C81274 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDD85464249CD681004BCE22 /* RootVC.swift in Sources */,
CDD85462249CD681004BCE22 /* EmptyVC.swift in Sources */,
CDF2C8E1249722F800C81274 /* AppDelegate.swift in Sources */,
CDD85465249CD681004BCE22 /* TestToastVC.swift in Sources */,
CDD85460249CD681004BCE22 /* TestGuardVC.swift in Sources */,
CDD85467249CD681004BCE22 /* TestAlertVC.swift in Sources */,
CDF2C8E3249722F800C81274 /* SceneDelegate.swift in Sources */,
CDD85466249CD681004BCE22 /* ViewController.swift in Sources */,
CDD85461249CD681004BCE22 /* BaseListVC.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8EF249722F900C81274 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDF2C8F8249722F900C81274 /* Example_Xcode11Tests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CDF2C8FA249722F900C81274 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDF2C903249722F900C81274 /* Example_Xcode11UITests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
CDF2C8F5249722F900C81274 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = CDF2C8DC249722F800C81274 /* Example-Xcode11 */;
targetProxy = CDF2C8F4249722F900C81274 /* PBXContainerItemProxy */;
};
CDF2C900249722F900C81274 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = CDF2C8DC249722F800C81274 /* Example-Xcode11 */;
targetProxy = CDF2C8FF249722F900C81274 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
CDF2C8E6249722F800C81274 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
CDF2C8E7249722F800C81274 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
CDF2C8EB249722F900C81274 /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
CDF2C8EC249722F900C81274 /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
CDF2C905249722F900C81274 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
CDF2C906249722F900C81274 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
CDF2C908249722F900C81274 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11";
PRODUCT_NAME = "ProHUD Demo";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CDF2C909249722F900C81274 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11";
PRODUCT_NAME = "ProHUD Demo";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
CDF2C90B249722F900C81274 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11Tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example-Xcode11.app/Example-Xcode11";
};
name = Debug;
};
CDF2C90C249722F900C81274 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11Tests/Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 13.5;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11Tests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Example-Xcode11.app/Example-Xcode11";
};
name = Release;
};
CDF2C90E249722F900C81274 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11UITests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11UITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Example-Xcode11";
};
name = Debug;
};
CDF2C90F249722F900C81274 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = 34W5TB5KD2;
INFOPLIST_FILE = "Example-Xcode11UITests/Info.plist";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = "com.xaoxuu.Example-Xcode11UITests";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
TEST_TARGET_NAME = "Example-Xcode11";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
CDF2C8D8249722F800C81274 /* Build configuration list for PBXProject "Example-Xcode11" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDF2C905249722F900C81274 /* Debug */,
CDF2C906249722F900C81274 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDF2C907249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDF2C908249722F900C81274 /* Debug */,
CDF2C909249722F900C81274 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDF2C90A249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11Tests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDF2C90B249722F900C81274 /* Debug */,
CDF2C90C249722F900C81274 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CDF2C90D249722F900C81274 /* Build configuration list for PBXNativeTarget "Example-Xcode11UITests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CDF2C90E249722F900C81274 /* Debug */,
CDF2C90F249722F900C81274 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
CDF2C9132497237300C81274 /* XCRemoteSwiftPackageReference "Inspire" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/xaoxuu/Inspire";
requirement = {
branch = master;
kind = branch;
};
};
CDF2C9482497577C00C81274 /* XCRemoteSwiftPackageReference "ProHUD" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/xaoxuu/ProHUD";
requirement = {
branch = master;
kind = branch;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
CDF2C9142497237300C81274 /* Inspire */ = {
isa = XCSwiftPackageProductDependency;
package = CDF2C9132497237300C81274 /* XCRemoteSwiftPackageReference "Inspire" */;
productName = Inspire;
};
CDF2C9492497577C00C81274 /* ProHUD */ = {
isa = XCSwiftPackageProductDependency;
package = CDF2C9482497577C00C81274 /* XCRemoteSwiftPackageReference "ProHUD" */;
productName = ProHUD;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = CDF2C8D5249722F800C81274 /* Project object */;
}

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,34 +0,0 @@
{
"object": {
"pins": [
{
"package": "Inspire",
"repositoryURL": "https://github.com/xaoxuu/Inspire",
"state": {
"branch": "master",
"revision": "22c89fa2ff06bcd44b8c0500a82e64d4baf80387",
"version": null
}
},
{
"package": "ProHUD",
"repositoryURL": "https://github.com/xaoxuu/ProHUD",
"state": {
"branch": "master",
"revision": "84b9931a8aa979d82c53376d9ff84f9e432dcc7c",
"version": null
}
},
{
"package": "SnapKit",
"repositoryURL": "https://github.com/SnapKit/SnapKit.git",
"state": {
"branch": null,
"revision": "d458564516e5676af9c70b4f4b2a9178294f1bc6",
"version": "5.0.1"
}
}
]
},
"version": 1
}

View File

@ -1,24 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="13122.16" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="BYZ-38-t0r">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="13104.12"/>
<capability name="Safe area layout guides" minToolsVersion="9.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModuleProvider="target" sceneMemberID="viewController">
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" xcode11CocoaTouchSystemColor="systemBackgroundColor" cocoaTouchSystemColor="whiteColor"/>
<viewLayoutGuide key="safeArea" id="6Tk-OE-BBY"/>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
</scene>
</scenes>
</document>

View File

@ -1,62 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View File

@ -1,34 +0,0 @@
//
// Example_Xcode11Tests.swift
// Example-Xcode11Tests
//
// Created by xaoxuu on 2020/6/15.
// Copyright © 2020 xaoxuu. All rights reserved.
//
import XCTest
@testable import Example_Xcode11
class Example_Xcode11Tests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// This is an example of a functional test case.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testPerformanceExample() throws {
// This is an example of a performance test case.
self.measure {
// Put the code you want to measure the time of here.
}
}
}

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,43 +0,0 @@
//
// Example_Xcode11UITests.swift
// Example-Xcode11UITests
//
// Created by xaoxuu on 2020/6/15.
// Copyright © 2020 xaoxuu. All rights reserved.
//
import XCTest
class Example_Xcode11UITests: XCTestCase {
override func setUpWithError() throws {
// Put setup code here. This method is called before the invocation of each test method in the class.
// In UI tests it is usually best to stop immediately when a failure occurs.
continueAfterFailure = false
// In UI tests its important to set the initial state - such as interface orientation - required for your tests before they run. The setUp method is a good place to do this.
}
override func tearDownWithError() throws {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
func testExample() throws {
// UI tests must launch the application that they test.
let app = XCUIApplication()
app.launch()
// Use recording to get started writing UI tests.
// Use XCTAssert and related functions to verify your tests produce the correct results.
}
func testLaunchPerformance() throws {
if #available(macOS 10.15, iOS 13.0, tvOS 13.0, *) {
// This measures how long it takes to launch your application.
measure(metrics: [XCTOSSignpostMetric.applicationLaunch]) {
XCUIApplication().launch()
}
}
}
}

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,2 +0,0 @@
# 使用 SceneDelegate 的项目

View File

@ -0,0 +1,419 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 55;
objects = {
/* Begin PBXBuildFile section */
CD6537BF28C3311B00A5981B /* ListModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6537BE28C3311B00A5981B /* ListModel.swift */; };
CD6537C128C35E1C00A5981B /* ListVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6537C028C35E1C00A5981B /* ListVC.swift */; };
CD6537C328C35E6200A5981B /* ToastVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6537C228C35E6200A5981B /* ToastVC.swift */; };
CD6537C528C35F2C00A5981B /* SheetVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6537C428C35F2C00A5981B /* SheetVC.swift */; };
CD8EEF3B28BC5C7200E660EA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8EEF3A28BC5C7200E660EA /* AppDelegate.swift */; };
CD8EEF3D28BC5C7200E660EA /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD8EEF3C28BC5C7200E660EA /* SceneDelegate.swift */; };
CD8EEF4228BC5C7200E660EA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD8EEF4028BC5C7200E660EA /* Main.storyboard */; };
CD8EEF4428BC5C7300E660EA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD8EEF4328BC5C7300E660EA /* Assets.xcassets */; };
CD8EEF4728BC5C7300E660EA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CD8EEF4528BC5C7300E660EA /* LaunchScreen.storyboard */; };
CD9C7B1E28CB8972006190CD /* Scenes.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD9C7B1D28CB8972006190CD /* Scenes.swift */; };
CDA83DB928C601E60025F0DF /* TableHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDA83DB828C601E60025F0DF /* TableHeaderView.swift */; };
CDB6A2A228BC5F4600DEC80D /* ProHUD in Frameworks */ = {isa = PBXBuildFile; productRef = CDB6A2A128BC5F4600DEC80D /* ProHUD */; };
CDB7A1D028C32A7400E034D8 /* AlertVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDB7A1CF28C32A7400E034D8 /* AlertVC.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
CD6537BE28C3311B00A5981B /* ListModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListModel.swift; sourceTree = "<group>"; };
CD6537C028C35E1C00A5981B /* ListVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListVC.swift; sourceTree = "<group>"; };
CD6537C228C35E6200A5981B /* ToastVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastVC.swift; sourceTree = "<group>"; };
CD6537C428C35F2C00A5981B /* SheetVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SheetVC.swift; sourceTree = "<group>"; };
CD8EEF3728BC5C7200E660EA /* PHDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = PHDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
CD8EEF3A28BC5C7200E660EA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
CD8EEF3C28BC5C7200E660EA /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = "<group>"; };
CD8EEF4128BC5C7200E660EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
CD8EEF4328BC5C7300E660EA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
CD8EEF4628BC5C7300E660EA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
CD8EEF4828BC5C7300E660EA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CD9C7B1D28CB8972006190CD /* Scenes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Scenes.swift; sourceTree = "<group>"; };
CDA83DB828C601E60025F0DF /* TableHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TableHeaderView.swift; sourceTree = "<group>"; };
CDB6A29F28BC5F0F00DEC80D /* ProHUD */ = {isa = PBXFileReference; lastKnownFileType = wrapper; name = ProHUD; path = ..; sourceTree = "<group>"; };
CDB7A1CF28C32A7400E034D8 /* AlertVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertVC.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
CD8EEF3428BC5C7200E660EA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CDB6A2A228BC5F4600DEC80D /* ProHUD in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
CD8EEF2E28BC5C7200E660EA = {
isa = PBXGroup;
children = (
CDB6A29E28BC5F0F00DEC80D /* Packages */,
CD8EEF3928BC5C7200E660EA /* PHDemo */,
CD8EEF3828BC5C7200E660EA /* Products */,
CDB6A2A028BC5F4600DEC80D /* Frameworks */,
);
sourceTree = "<group>";
};
CD8EEF3828BC5C7200E660EA /* Products */ = {
isa = PBXGroup;
children = (
CD8EEF3728BC5C7200E660EA /* PHDemo.app */,
);
name = Products;
sourceTree = "<group>";
};
CD8EEF3928BC5C7200E660EA /* PHDemo */ = {
isa = PBXGroup;
children = (
CD8EEF3A28BC5C7200E660EA /* AppDelegate.swift */,
CD8EEF3C28BC5C7200E660EA /* SceneDelegate.swift */,
CD6537BE28C3311B00A5981B /* ListModel.swift */,
CDA83DB828C601E60025F0DF /* TableHeaderView.swift */,
CD9C7B1D28CB8972006190CD /* Scenes.swift */,
CD6537C028C35E1C00A5981B /* ListVC.swift */,
CDB7A1CF28C32A7400E034D8 /* AlertVC.swift */,
CD6537C228C35E6200A5981B /* ToastVC.swift */,
CD6537C428C35F2C00A5981B /* SheetVC.swift */,
CD8EEF4028BC5C7200E660EA /* Main.storyboard */,
CD8EEF4328BC5C7300E660EA /* Assets.xcassets */,
CD8EEF4528BC5C7300E660EA /* LaunchScreen.storyboard */,
CD8EEF4828BC5C7300E660EA /* Info.plist */,
);
path = PHDemo;
sourceTree = "<group>";
};
CDB6A29E28BC5F0F00DEC80D /* Packages */ = {
isa = PBXGroup;
children = (
CDB6A29F28BC5F0F00DEC80D /* ProHUD */,
);
name = Packages;
sourceTree = "<group>";
};
CDB6A2A028BC5F4600DEC80D /* Frameworks */ = {
isa = PBXGroup;
children = (
);
name = Frameworks;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
CD8EEF3628BC5C7200E660EA /* PHDemo */ = {
isa = PBXNativeTarget;
buildConfigurationList = CD8EEF4B28BC5C7300E660EA /* Build configuration list for PBXNativeTarget "PHDemo" */;
buildPhases = (
CD8EEF3328BC5C7200E660EA /* Sources */,
CD8EEF3428BC5C7200E660EA /* Frameworks */,
CD8EEF3528BC5C7200E660EA /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = PHDemo;
packageProductDependencies = (
CDB6A2A128BC5F4600DEC80D /* ProHUD */,
);
productName = PHDemo;
productReference = CD8EEF3728BC5C7200E660EA /* PHDemo.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CD8EEF2F28BC5C7200E660EA /* Project object */ = {
isa = PBXProject;
attributes = {
BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1340;
LastUpgradeCheck = 1340;
TargetAttributes = {
CD8EEF3628BC5C7200E660EA = {
CreatedOnToolsVersion = 13.4.1;
};
};
};
buildConfigurationList = CD8EEF3228BC5C7200E660EA /* Build configuration list for PBXProject "PHDemo" */;
compatibilityVersion = "Xcode 13.0";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CD8EEF2E28BC5C7200E660EA;
productRefGroup = CD8EEF3828BC5C7200E660EA /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CD8EEF3628BC5C7200E660EA /* PHDemo */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CD8EEF3528BC5C7200E660EA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CD8EEF4728BC5C7300E660EA /* LaunchScreen.storyboard in Resources */,
CD8EEF4428BC5C7300E660EA /* Assets.xcassets in Resources */,
CD8EEF4228BC5C7200E660EA /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
CD8EEF3328BC5C7200E660EA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CDA83DB928C601E60025F0DF /* TableHeaderView.swift in Sources */,
CD6537C528C35F2C00A5981B /* SheetVC.swift in Sources */,
CD6537C328C35E6200A5981B /* ToastVC.swift in Sources */,
CDB7A1D028C32A7400E034D8 /* AlertVC.swift in Sources */,
CD6537C128C35E1C00A5981B /* ListVC.swift in Sources */,
CD8EEF3B28BC5C7200E660EA /* AppDelegate.swift in Sources */,
CD8EEF3D28BC5C7200E660EA /* SceneDelegate.swift in Sources */,
CD9C7B1E28CB8972006190CD /* Scenes.swift in Sources */,
CD6537BF28C3311B00A5981B /* ListModel.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
CD8EEF4028BC5C7200E660EA /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
CD8EEF4128BC5C7200E660EA /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
CD8EEF4528BC5C7300E660EA /* LaunchScreen.storyboard */ = {
isa = PBXVariantGroup;
children = (
CD8EEF4628BC5C7300E660EA /* Base */,
);
name = LaunchScreen.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
CD8EEF4928BC5C7300E660EA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
CD8EEF4A28BC5C7300E660EA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 15.5;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
CD8EEF4C28BC5C7300E660EA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = DASH6JFSDW;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = PHDemo/Info.plist;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.PHDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CD8EEF4D28BC5C7300E660EA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = DASH6JFSDW;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = PHDemo/Info.plist;
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight";
IPHONEOS_DEPLOYMENT_TARGET = 13.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.PHDemo;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
CD8EEF3228BC5C7200E660EA /* Build configuration list for PBXProject "PHDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CD8EEF4928BC5C7300E660EA /* Debug */,
CD8EEF4A28BC5C7300E660EA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CD8EEF4B28BC5C7300E660EA /* Build configuration list for PBXNativeTarget "PHDemo" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CD8EEF4C28BC5C7300E660EA /* Debug */,
CD8EEF4D28BC5C7300E660EA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCSwiftPackageProductDependency section */
CDB6A2A128BC5F4600DEC80D /* ProHUD */ = {
isa = XCSwiftPackageProductDependency;
productName = ProHUD;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = CD8EEF2F28BC5C7200E660EA /* Project object */;
}

View File

@ -0,0 +1,23 @@
{
"pins" : [
{
"identity" : "inspire",
"kind" : "remoteSourceControl",
"location" : "https://github.com/xaoxuu/Inspire.git",
"state" : {
"revision" : "10d5a17ee24c8a66da9a3971c62c1d161d2a4cd2",
"version" : "3.0.0"
}
},
{
"identity" : "snapkit",
"kind" : "remoteSourceControl",
"location" : "https://github.com/SnapKit/SnapKit.git",
"state" : {
"revision" : "f222cbdf325885926566172f6f5f06af95473158",
"version" : "5.6.0"
}
}
],
"version" : 2
}

298
PHDemo/PHDemo/AlertVC.swift Normal file
View File

@ -0,0 +1,298 @@
//
// AlertVC.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/3.
//
import UIKit
import ProHUD
class AlertVC: ListVC {
override func viewDidLoad() {
super.viewDidLoad()
// Uncomment the following line to preserve selection between presentations
// self.clearsSelectionOnViewWillAppear = false
header.titleLabel.text = "ProHUD.Alert"
header.detailLabel.text = "弹窗控件,用于强阻塞性交互,用户必须做出选择或者等待结果才能进入下一步,当多个实例出现时,会以堆叠的形式显示,新的实例会在覆盖旧的实例上层。"
Alert.Configuration.shared { config in
config.reloadData { vc in
if vc.identifier == "custom" {
return true
}
return false
}
}
list.add(title: "纯文字") { section in
section.add(title: "只有一句话") {
Alert(.message("只有一句话").duration(2)).push()
}
section.add(title: "标题 + 正文") {
let title = "这是标题"
let message = "这是正文文字支持自动换行可设置最小宽度和最大宽度。这个弹窗将会持续4秒。"
Alert { alert in
alert.vm = .text(title: title, message: message)
alert.vm.duration = 4
}
}
}
list.add(title: "图文弹窗") { section in
section.add(title: "纯图标") {
Alert(.loading(3)).push()
}
section.add(title: "图标 + 文字") {
Alert(.loading(4).message("正在加载")) { alert in
alert.update(progress: 0)
DispatchQueue.main.asyncAfter(deadline: .now() + 0.01) {
alert.update(progress: 0.01)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
alert.update(progress: 0.33)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
alert.update(progress: 0.67)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 3) {
alert.update(progress: 1)
}
}
}
section.add(title: "图标 + 标题 + 正文") {
Alert(.error) { alert in
alert.vm.title = "加载失败"
alert.vm.message = "请稍后重试"
alert.vm.duration = 3
}
}
}
list.add(title: "文字 + 按钮") { section in
section.add(title: "只有一段文字 + 按钮") {
Alert { alert in
alert.vm.title = "只有一段文字"
alert.add(action: "取消", style: .gray)
alert.add(action: "默认按钮")
}
}
section.add(title: "标题 + 正文 + 按钮") {
Alert { alert in
alert.vm.title = "标题"
alert.vm.message = "这是一段正文,长度超出最大宽度时会自动换行"
alert.add(action: "取消", style: .gray)
alert.add(action: "删除", style: .destructive) { alert in
// pop
alert.pop()
}
}
}
}
list.add(title: "图标 + 文字 + 按钮") { section in
section.add(title: "图标 + 一段文字 + 自定义浅色按钮") {
Alert(.confirm) { alert in
alert.vm.title = "自定义浅色按钮"
alert.add(action: "红色", style: .light(color: .systemRed))
alert.add(action: "蓝色", style: .light(color: .systemBlue))
}
}
section.add(title: "图标 + 标题 + 正文 + 自定义深色按钮") {
Alert(.note) { alert in
alert.vm.title = "自定义深色按钮"
alert.vm.message = "这是一段正文,长度超出最大宽度时会自动换行"
alert.add(action: "橙色", style: .filled(color: .systemOrange))
alert.add(action: "粉色", style: .filled(color: .systemPink))
alert.add(action: "默认灰色", style: .gray)
}
}
}
list.add(title: "控件动态管理") { section in
section.add(title: "按钮增删") {
Alert(.note) { alert in
alert.vm.message = "可以动态增加、删除按钮"
alert.add(action: "在底部增加按钮", style: .filled(color: .systemGreen)) { alert in
alert.add(action: "哈哈1", identifier: "haha1")
}
alert.add(action: "在当前按钮下方增加", style: .filled(color: .systemIndigo), identifier: "add") { alert in
alert.insert(action: .init(identifier: "haha2", style: .light(color: .systemOrange), title: "哈哈2", handler: nil), after: "add")
}
alert.add(action: "修改当前按钮文字", identifier: "edit") { alert in
alert.update(action: "已修改", for: "edit")
}
alert.add(action: "删除「哈哈1」", style: .destructive) { alert in
alert.remove(actions: .identifiers("haha1"))
}
alert.add(action: "删除「哈哈1」和「哈哈2」", style: .destructive) { alert in
alert.remove(actions: .identifiers("haha1", "haha2"))
}
alert.add(action: "删除全部按钮", style: .destructive) { alert in
alert.remove(actions: .all)
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
alert.pop()
}
}
alert.add(action: "取消", style: .gray)
}
}
section.add(title: "更新文字") {
Alert(.note) { alert in
alert.vm.message = "可以动态增加、删除、更新文字"
alert.add(action: "增加标题") { alert in
alert.vm.title = "这是标题"
alert.reloadTextStack()
}
alert.add(action: "增加正文") { alert in
alert.vm.message = "可以动态增加、删除、更新文字"
alert.reloadTextStack()
}
alert.add(action: "删除标题", style: .destructive) { alert in
alert.vm.title = nil
alert.reloadTextStack()
}
alert.add(action: "删除正文", style: .destructive) { alert in
alert.vm.message = nil
alert.reloadTextStack()
}
alert.add(action: "取消", style: .gray)
}
}
section.add(title: "在弹出过程中增加元素") {
Alert(.loading) { alert in
alert.vm.title = "在弹出过程中增加元素"
alert.add(action: "OK", style: .gray)
alert.config.actionAxis = .vertical
} .onViewWillAppear { vc in
guard let alert = vc as? Alert else {
return
}
alert.vm.message = "这是一段后增加的文字\n动画效果会有细微差别"
alert.reloadTextStack()
}
}
}
list.add(title: "多实例管理") { section in
section.add(title: "多层级弹窗") {
func f(i: Int) {
Alert { alert in
alert.vm.title = "\(i)次弹"
alert.vm.message = "每次都是一个新的实例覆盖在上一个弹窗上面,而背景不会叠加变深。"
alert.add(action: "取消", style: .gray)
alert.add(action: "增加一个") { alert in
f(i: i + 1)
}
}
}
f(i: 1)
}
section.add(title: "弹出loading如果有就不重复弹") {
func f(i: Int) {
Alert.lazyPush(identifier: "haha") { alert in
if i < 2 {
alert.vm = .loading.title("\(i)次弹")
let btn = alert.add(action: "请稍等", identifier: "btn")
btn.isEnabled = false
} else {
alert.update(progress: 1)
alert.vm = .success.title("\(i)次弹").message("只更新内容")
alert.reloadTextStack()
alert.update(action: "完成", style: .filled(color: .systemGreen), for: "btn")
alert.button(for: "btn")?.isEnabled = true
}
}
}
f(i: 1)
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
f(i: 2)
}
}
}
list.add(title: "放在特定页面") { [weak self] section in
section.add(title: "放在特定页面") {
let vc = UIViewController()
vc.title = "页面"
vc.view.backgroundColor = .systemYellow
let alert = Alert(.loading.title("正在加载").message("这个弹窗被放在指定的容器中"))
alert.config.enableShadow = false
self?.present(vc, animated: true)
vc.view.addSubview(alert.view)
alert.view.snp.makeConstraints { make in
make.edges.equalToSuperview()
}
}
}
list.add(title: "自定义视图") { section in
section.add(title: "自定义控件") {
Alert { alert in
alert.vm.title = "自定义控件"
//
let imgv = UIImageView(image: UIImage(named: "landscape"))
imgv.contentMode = .scaleAspectFill
imgv.clipsToBounds = true
imgv.layer.cornerRadiusWithContinuous = 12
alert.add(subview: imgv).snp.makeConstraints { make in
make.height.equalTo(120)
}
// seg
let seg = UISegmentedControl(items: ["开发", "测试", "预发", "生产"])
seg.selectedSegmentIndex = 0
alert.add(subview: seg).snp.makeConstraints { make in
make.height.equalTo(40)
make.width.equalTo(400)
}
// slider
let slider = UISlider()
slider.minimumValue = 0
slider.maximumValue = 100
slider.value = 50
alert.add(subview: slider)
alert.add(spacing: 24)
alert.add(action: "取消", style: .gray)
}
}
section.add(title: "圆角半径") {
Alert { alert in
alert.title = "圆角半径"
let s1 = UISlider()
s1.minimumValue = 0
s1.maximumValue = 40
s1.value = Float(alert.config.cardCornerRadius ?? 16)
alert.add(subview: s1).snp.makeConstraints { make in
make.height.equalTo(50)
}
if #available(iOS 14.0, *) {
s1.addAction(.init(handler: { [unowned s1] act in
alert.config.cardCornerRadius = CGFloat(s1.value)
alert.contentView.layer.cornerRadiusWithContinuous = alert.config.cardCornerRadius ?? 16
}), for: .valueChanged)
} else {
// Fallback on earlier versions
}
alert.config.actionAxis = .vertical
alert.add(spacing: 24)
alert.add(action: "OK", style: .gray)
}
}
section.add(title: "完全自定义容器") {
Alert { alert in
alert.identifier = "custom"
alert.contentView.backgroundColor = .systemYellow
alert.view.addSubview(alert.contentView)
alert.contentView.layer.cornerRadiusWithContinuous = 32
alert.contentView.snp.makeConstraints { make in
make.width.equalTo(UIScreen.main.bounds.width - 100)
make.height.equalTo(UIScreen.main.bounds.height - 200)
make.center.equalToSuperview()
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
alert.pop()
}
}
}
}
}
}

View File

@ -1,26 +1,17 @@
// //
// AppDelegate.swift // AppDelegate.swift
// Example-Xcode11 // PHDemo
// //
// Created by xaoxuu on 2020/6/15. // Created by xaoxuu on 2022/8/29.
// Copyright © 2020 xaoxuu. All rights reserved.
// //
import UIKit import UIKit
@_exported import ProHUD
typealias ProAlert = ProHUD.Alert
typealias ProToast = ProHUD.Toast
typealias ProGuard = ProHUD.Guard
@main
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate { class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch. // Override point for customization after application launch.
return true return true
} }

View File

@ -0,0 +1,15 @@
{
"colors" : [
{
"color" : {
"platform" : "ios",
"reference" : "systemBlueColor"
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

View File

Before

Width:  |  Height:  |  Size: 17 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 9.1 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 29 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

Before

Width:  |  Height:  |  Size: 2.8 KiB

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 445 KiB

After

Width:  |  Height:  |  Size: 445 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View File

Before

Width:  |  Height:  |  Size: 3.6 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

Before

Width:  |  Height:  |  Size: 5.0 KiB

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -0,0 +1,21 @@
{
"images" : [
{
"filename" : "F462262A-3B98-4677-A4F2-75827167E067_1_105_c.jpeg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 94 KiB

View File

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

@ -0,0 +1,131 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="20037" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" useSafeAreas="YES" colorMatched="YES" initialViewController="06J-FN-U3n">
<device id="retina6_1" orientation="portrait" appearance="light"/>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="20020"/>
<capability name="System colors in document resources" minToolsVersion="11.0"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--Alert-->
<scene sceneID="LP0-RE-kvY">
<objects>
<tableViewController id="NBo-Re-tKO" customClass="AlertVC" customModule="PHDemo" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="insetGrouped" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" estimatedSectionHeaderHeight="-1" sectionFooterHeight="18" estimatedSectionFooterHeight="-1" id="eCS-6f-ub3">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemGroupedBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="reuseIdentifier" id="aQS-HA-vLM">
<rect key="frame" x="20" y="49.5" width="374" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="aQS-HA-vLM" id="Kt9-sG-LyY">
<rect key="frame" x="0.0" y="0.0" width="345.5" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="NBo-Re-tKO" id="y5b-0b-bjs"/>
<outlet property="delegate" destination="NBo-Re-tKO" id="1L3-SV-7FG"/>
</connections>
</tableView>
<tabBarItem key="tabBarItem" title="Alert" image="exclamationmark.triangle.fill" catalog="system" id="pLJ-z8-SS1"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="ydp-D5-Zdx" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="955" y="804"/>
</scene>
<!--Tab Bar Controller-->
<scene sceneID="ej2-I3-4Bd">
<objects>
<tabBarController automaticallyAdjustsScrollViewInsets="NO" id="06J-FN-U3n" sceneMemberID="viewController">
<toolbarItems/>
<navigationItem key="navigationItem" id="0Lv-P4-IBc"/>
<tabBar key="tabBar" contentMode="scaleToFill" insetsLayoutMarginsFromSafeArea="NO" id="yC9-4u-5o2">
<rect key="frame" x="0.0" y="0.0" width="1000" height="1000"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</tabBar>
<connections>
<segue destination="NBo-Re-tKO" kind="relationship" relationship="viewControllers" id="0Aw-nV-Vkk"/>
<segue destination="h7R-Kd-Dn5" kind="relationship" relationship="viewControllers" id="icb-EL-vph"/>
<segue destination="9SY-ag-pK6" kind="relationship" relationship="viewControllers" id="hyh-rR-Frr"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="avc-BE-wZC" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1865.217391304348" y="71.651785714285708"/>
</scene>
<!--Toast-->
<scene sceneID="DAh-i5-GcF">
<objects>
<tableViewController id="h7R-Kd-Dn5" customClass="ToastVC" customModule="PHDemo" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="insetGrouped" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" estimatedSectionHeaderHeight="-1" sectionFooterHeight="18" estimatedSectionFooterHeight="-1" id="MVT-cH-t1Z">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemGroupedBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="reuseIdentifier" id="Cfl-KC-JaI">
<rect key="frame" x="20" y="49.5" width="374" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="Cfl-KC-JaI" id="OCw-s2-GD5">
<rect key="frame" x="0.0" y="0.0" width="345.5" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="h7R-Kd-Dn5" id="vFn-zO-y4I"/>
<outlet property="delegate" destination="h7R-Kd-Dn5" id="8Px-ei-ipU"/>
</connections>
</tableView>
<tabBarItem key="tabBarItem" title="Toast" image="bubble.left.fill" catalog="system" id="YYs-U3-EWo"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="VmT-Tm-s4d" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1865" y="804"/>
</scene>
<!--Sheet-->
<scene sceneID="DG9-RE-7gC">
<objects>
<tableViewController id="9SY-ag-pK6" customClass="SheetVC" customModule="PHDemo" customModuleProvider="target" sceneMemberID="viewController">
<tableView key="view" clipsSubviews="YES" contentMode="scaleToFill" alwaysBounceVertical="YES" dataMode="prototypes" style="insetGrouped" rowHeight="-1" estimatedRowHeight="-1" sectionHeaderHeight="18" estimatedSectionHeaderHeight="-1" sectionFooterHeight="18" estimatedSectionFooterHeight="-1" id="N9I-Aa-GtP">
<rect key="frame" x="0.0" y="0.0" width="414" height="896"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<color key="backgroundColor" systemColor="systemGroupedBackgroundColor"/>
<prototypes>
<tableViewCell clipsSubviews="YES" contentMode="scaleToFill" preservesSuperviewLayoutMargins="YES" selectionStyle="default" accessoryType="disclosureIndicator" indentationWidth="10" reuseIdentifier="reuseIdentifier" id="H4y-fE-fXP">
<rect key="frame" x="20" y="49.5" width="374" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
<tableViewCellContentView key="contentView" opaque="NO" clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="center" preservesSuperviewLayoutMargins="YES" insetsLayoutMarginsFromSafeArea="NO" tableViewCell="H4y-fE-fXP" id="LOF-l1-ziH">
<rect key="frame" x="0.0" y="0.0" width="345.5" height="43.5"/>
<autoresizingMask key="autoresizingMask"/>
</tableViewCellContentView>
</tableViewCell>
</prototypes>
<sections/>
<connections>
<outlet property="dataSource" destination="9SY-ag-pK6" id="hlb-VE-6Jl"/>
<outlet property="delegate" destination="9SY-ag-pK6" id="UkD-l4-OhM"/>
</connections>
</tableView>
<tabBarItem key="tabBarItem" title="Sheet" image="iphone" catalog="system" id="3or-OI-jbb"/>
</tableViewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="Pal-Bf-SfP" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="2742" y="804"/>
</scene>
</scenes>
<resources>
<image name="bubble.left.fill" catalog="system" width="128" height="110"/>
<image name="exclamationmark.triangle.fill" catalog="system" width="128" height="112"/>
<image name="iphone" catalog="system" width="108" height="128"/>
<systemColor name="systemGroupedBackgroundColor">
<color red="0.94901960784313721" green="0.94901960784313721" blue="0.96862745098039216" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
</systemColor>
</resources>
</document>

25
PHDemo/PHDemo/Info.plist Normal file
View File

@ -0,0 +1,25 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>
<false/>
<key>UISceneConfigurations</key>
<dict>
<key>UIWindowSceneSessionRoleApplication</key>
<array>
<dict>
<key>UISceneConfigurationName</key>
<string>Default Configuration</string>
<key>UISceneDelegateClassName</key>
<string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
<key>UISceneStoryboardFile</key>
<string>Main</string>
</dict>
</array>
</dict>
</dict>
</dict>
</plist>

View File

@ -0,0 +1,33 @@
//
// ListModel.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/3.
//
import UIKit
struct Row {
var title: String
var action: () -> Void
}
struct Section {
var title: String
var rows = [Row]()
mutating func add(title: String, action: @escaping () -> Void) {
rows.append(.init(title: title, action: action))
}
}
struct ListModel {
var sections = [Section]()
mutating func add(title: String, rows: (_ section: inout Section) -> Void) {
var sec = Section(title: title)
rows(&sec)
sections.append(sec)
}
}

View File

@ -0,0 +1,53 @@
//
// ListVC.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/3.
//
import UIKit
class ListVC: UITableViewController {
var list = ListModel()
lazy var header: TableHeaderView = TableHeaderView(text: "ProHUD")
override func viewDidLoad() {
super.viewDidLoad()
tableView.tableHeaderView = header
tableView.sectionHeaderHeight = 32
tableView.sectionFooterHeight = 8
}
override func numberOfSections(in tableView: UITableView) -> Int {
// #warning Incomplete implementation, return the number of sections
list.sections.count
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
// #warning Incomplete implementation, return the number of rows
list.sections[section].rows.count
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
list.sections[section].title
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
cell.textLabel?.text = list.sections[indexPath.section].rows[indexPath.row].title
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
tableView.deselectRow(at: indexPath, animated: true)
list.sections[indexPath.section].rows[indexPath.row].action()
}
}

View File

@ -1,9 +1,8 @@
// //
// SceneDelegate.swift // SceneDelegate.swift
// Example-Xcode11 // PHDemo
// //
// Created by xaoxuu on 2020/6/15. // Created by xaoxuu on 2022/8/29.
// Copyright © 2020 xaoxuu. All rights reserved.
// //
import UIKit import UIKit
@ -17,46 +16,14 @@ class SceneDelegate: UIResponder, UIWindowSceneDelegate {
// Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`. // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
// If using a storyboard, the `window` property will automatically be initialized and attached to the scene. // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
// This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead). // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
guard let scene = (scene as? UIWindowScene) else { return } guard let _ = (scene as? UIWindowScene) else { return }
print(scene.statusBarManager?.statusBarFrame)
let rootVC = RootVC()
window?.rootViewController = rootVC
window?.makeKeyAndVisible()
print("root window \(window!)")
ProHUD.config { (cfg) in
// cfg.rootViewController = rootVC
// cfg.windowScene = scene
cfg.alert { (a) in
a.titleFont = .bold(22)
a.bodyFont = .regular(17)
a.boldTextFont = .bold(18)
a.buttonFont = .bold(18)
a.forceQuitTimer = 3
}
cfg.toast { (t) in
t.titleFont = .bold(18)
t.bodyFont = .regular(16)
}
cfg.guard { (g) in
g.titleFont = .bold(22)
g.subTitleFont = .bold(20)
g.bodyFont = .regular(17)
g.buttonFont = .bold(18)
}
}
let window = UIWindow()
window.makeKeyAndVisible()
window.resignKey()
} }
func sceneDidDisconnect(_ scene: UIScene) { func sceneDidDisconnect(_ scene: UIScene) {
// Called as the scene is being released by the system. // Called as the scene is being released by the system.
// This occurs shortly after the scene enters the background, or when its session is discarded. // This occurs shortly after the scene enters the background, or when its session is discarded.
// Release any resources associated with this scene that can be re-created the next time the scene connects. // Release any resources associated with this scene that can be re-created the next time the scene connects.
// The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead). // The scene may re-connect later, as its session was not necessarily discarded (see `application:didDiscardSceneSessions` instead).
} }
func sceneDidBecomeActive(_ scene: UIScene) { func sceneDidBecomeActive(_ scene: UIScene) {

View File

@ -0,0 +1,34 @@
//
// File.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/9.
//
import UIKit
import ProHUD
public extension ViewModel {
// static var plain: ViewModel {
// ViewModel()
// }
// static var note: ViewModel {
// ViewModel(icon: UIImage(named: "prohud.note"))
// }
static var msg: ViewModel {
ViewModel(icon: UIImage(inProHUD: "prohud.message"))
}
static func msg(_ seconds: TimeInterval) -> ViewModel {
ViewModel(icon: UIImage(inProHUD: "prohud.message"), duration: seconds)
}
static var loading: ViewModel {
let obj = ViewModel(icon: UIImage(named: "prohud.rainbow.circle"))
obj.rotation = .init(repeatCount: .infinity)
return obj
}
// static func loading(_ seconds: TimeInterval) -> ViewModel {
// let obj = ViewModel(icon: UIImage(named: "prohud.rainbow.circle"), duration: seconds)
// obj.rotation = .init(repeatCount: .infinity)
// return obj
// }
}

214
PHDemo/PHDemo/SheetVC.swift Normal file
View File

@ -0,0 +1,214 @@
//
// SheetVC.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/3.
//
import UIKit
import ProHUD
class SheetVC: ListVC {
override func viewDidLoad() {
super.viewDidLoad()
header.titleLabel.text = "ProHUD.Sheet"
header.detailLabel.text = "操作表控件,用于弱阻塞性交互。显示区域为从屏幕底部向上弹出的新图层,可以放置丰富的内容,自由度较高。"
list.add(title: "默认布局") { section in
section.add(title: "标题 + 正文 + 按钮") {
Sheet { sheet in
sheet.add(title: "ProHUD")
sheet.add(subTitle: "什么是操作表控件")
sheet.add(message: "操作表控件,用于弱阻塞性交互。显示区域为从屏幕底部向上弹出的新图层,可以放置丰富的内容,自由度较高。")
sheet.add(spacing: 24)
sheet.add(action: "确认", style: .destructive) { sheet in
Alert(.confirm) { alert in
alert.vm.title = "处理点击事件"
alert.add(action: "我知道了")
}
}
sheet.add(action: "取消", style: .gray)
}
}
section.add(title: "放置自定义控件") {
Sheet { sheet in
sheet.add(title: "ProHUD")
//
let imgv = UIImageView(image: UIImage(named: "landscape"))
imgv.contentMode = .scaleAspectFill
imgv.clipsToBounds = true
imgv.layer.cornerRadiusWithContinuous = 16
sheet.add(subview: imgv).snp.makeConstraints { make in
make.height.equalTo(200)
}
// seg
let seg = UISegmentedControl(items: ["开发", "测试", "预发", "生产"])
seg.selectedSegmentIndex = 0
sheet.add(subview: seg).snp.makeConstraints { make in
make.height.equalTo(40)
make.width.equalTo(400)
}
// slider
let slider = UISlider()
slider.minimumValue = 0
slider.maximumValue = 100
slider.value = 50
sheet.add(subview: slider).snp.makeConstraints { make in
make.height.equalTo(50)
}
sheet.add(spacing: 50)
}
}
section.add(title: "全屏") {
Sheet { sheet in
sheet.config.isFullScreen = true
sheet.add(title: "ProHUD")
sheet.add(action: "OK")
}
}
}
list.add(title: "事件管理") { section in
section.add(title: "拦截返回事件") {
Sheet { sheet in
sheet.add(title: "ProHUD")
sheet.add(message: "点击背景将不会dismiss必须在下方做出选择才能关掉")
sheet.add(spacing: 24)
sheet.add(action: "确认")
sheet.add(action: "取消", style: .gray)
} onTappedBackground: { sheet in
print("点击了背景")
Toast.lazyPush(identifier: "alert") { toast in
toast.vm = .note
toast.vm.title = "点击了背景"
toast.vm.message = "点击背景将不会dismiss必须在下方做出选择才能关掉"
toast.vm.duration = 2
}
}
}
}
list.add(title: "自定义样式") { section in
section.add(title: "圆角半径 & 屏幕边距") {
Sheet { sheet in
sheet.add(title: "圆角半径 & 屏幕边距")
sheet.add(subTitle: "圆角半径")
let s1 = UISlider()
s1.minimumValue = 0
s1.maximumValue = 40
s1.value = Float(sheet.config.cardCornerRadius ?? 40)
sheet.add(subview: s1).snp.makeConstraints { make in
make.height.equalTo(50)
}
if #available(iOS 14.0, *) {
s1.addAction(.init(handler: { [unowned s1] act in
sheet.config.cardCornerRadius = CGFloat(s1.value)
sheet.contentView.layer.cornerRadiusWithContinuous = sheet.config.cardCornerRadius ?? 40
}), for: .valueChanged)
} else {
// Fallback on earlier versions
}
sheet.add(subTitle: "屏幕边距")
let s2 = UISlider()
s2.minimumValue = 0
s2.maximumValue = 40
s2.value = Float(sheet.config.edgeInset)
sheet.add(subview: s2).snp.makeConstraints { make in
make.height.equalTo(50)
}
if #available(iOS 14.0, *) {
s2.addAction(.init(handler: { [unowned s2] act in
sheet.config.edgeInset = CGFloat(s2.value)
sheet.reloadData()
}), for: .valueChanged)
} else {
// Fallback on earlier versions
}
sheet.add(spacing: 24)
sheet.add(action: "OK", style: .gray)
}
}
section.add(title: "卡片背景样式") {
Sheet { sheet in
sheet.title = "卡片背景样式"
sheet.add(action: "白色") { sheet in
sheet.contentMaskView.backgroundColor = .white
sheet.contentMaskView.effect = .none
}
sheet.add(action: "橙色") { sheet in
sheet.contentMaskView.backgroundColor = .systemOrange
sheet.contentMaskView.effect = .none
}
sheet.add(action: "毛玻璃 light") { sheet in
sheet.contentMaskView.backgroundColor = .clear
sheet.contentMaskView.effect = UIBlurEffect(style: .light)
}
sheet.add(action: "毛玻璃 dark") { sheet in
sheet.contentMaskView.backgroundColor = .clear
sheet.contentMaskView.effect = UIBlurEffect(style: .dark)
}
}
}
section.add(title: "自定义卡片背景") {
Sheet { sheet in
sheet.add(title: "ProHUD")
sheet.add(spacing: 24)
sheet.add(action: "OK")
sheet.config.contentViewMask { mask in
mask.effect = .none
mask.backgroundColor = .clear
}
} .onViewWillAppear { vc in
guard let sheet = vc as? Sheet else { return }
let imgv = UIImageView(image: UIImage(named: "landscape"))
imgv.contentMode = .scaleAspectFill
imgv.clipsToBounds = true
imgv.layer.cornerRadiusWithContinuous = 16
sheet.contentView.insertSubview(imgv, at: 0)
imgv.snp.makeConstraints { make in
make.edges.equalToSuperview()
make.height.equalTo(300)
}
}
}
section.add(title: "透明背景") {
Sheet { sheet in
sheet.backgroundView.backgroundColor = .clear
sheet.add(title: "ProHUD")
sheet.add(spacing: 24)
sheet.add(action: "OK")
}
}
section.add(title: "自定义布局") {
Sheet { sheet in
let imgv = UIImageView(image: UIImage(named: "landscape"))
imgv.contentMode = .scaleAspectFill
imgv.clipsToBounds = true
imgv.layer.cornerRadiusWithContinuous = 16
sheet.set(customView: imgv).snp.makeConstraints { make in
make.edges.equalToSuperview()
make.height.equalTo(300)
}
}
}
}
}
}

View File

@ -0,0 +1,55 @@
//
// TableHeaderView.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/5.
//
import UIKit
class TableHeaderView: UIView {
lazy var titleLabel: UILabel = {
let lb = UILabel(frame: .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 80))
lb.font = .systemFont(ofSize: 32, weight: .black)
lb.textAlignment = .center
lb.text = "ProHUD"
return lb
}()
lazy var detailLabel: UILabel = {
let lb = UILabel(frame: .init(x: 0, y: 80, width: UIScreen.main.bounds.width, height: 120))
lb.font = .systemFont(ofSize: 15, weight: .regular)
lb.textAlignment = .justified
lb.numberOfLines = 0
lb.text = "ProHUD"
return lb
}()
convenience init(text: String) {
self.init(frame: .init(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 150))
titleLabel.text = text
}
override init(frame: CGRect) {
super.init(frame: frame)
addSubview(detailLabel)
addSubview(titleLabel)
titleLabel.snp.makeConstraints { make in
make.left.right.equalToSuperview().inset(24)
make.top.equalToSuperview().offset(20)
}
detailLabel.snp.makeConstraints { make in
make.left.right.equalTo(titleLabel)
make.top.equalTo(titleLabel.snp.bottom).offset(12)
}
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}

224
PHDemo/PHDemo/ToastVC.swift Normal file
View File

@ -0,0 +1,224 @@
//
// ToastVC.swift
// PHDemo
//
// Created by xaoxuu on 2022/9/3.
//
import UIKit
import ProHUD
class ToastVC: ListVC {
override func viewDidLoad() {
super.viewDidLoad()
let title = "通知条控件"
let message = "通知条控件,用于非阻塞性事件通知。显示效果如同原生通知,默认会自动消失,可以支持手势移除,有多条通知可以平铺并列显示。"
header.titleLabel.text = "ProHUD.Toast"
header.detailLabel.text = message
list.add(title: "默认布局") { section in
section.add(title: "标题 + 正文") {
Toast(.title(title).message(message)).push()
}
section.add(title: "一段长文本") {
Toast(.message(message)).push()
}
section.add(title: "图标 + 标题 + 正文") {
let s1 = "正在加载"
let s2 = "这条通知4s后消失"
let toast = Toast(.loading(4).title(s1).message(s2))
toast.identifier = "loading"
toast.push()
toast.update(progress: 0)
DispatchQueue.main.asyncAfter(deadline: .now() + 1) {
toast.update(progress: 0.5)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
toast.update(progress: 1)
}
DispatchQueue.main.asyncAfter(deadline: .now() + 2.5) {
Toast.update(identifier: "loading") { toast in
toast.vm = .success(2).title("加载成功").message("这条通知2s后消失")
}
}
}
section.add(title: "图标 + 一段长文本") {
Toast(.note.message(message)).push()
}
}
list.add(title: "事件管理") { section in
section.add(title: "全局点击事件") {
let title = "您收到了一条消息"
let message = "这条消息5s后消失点击回复"
Toast(.msg(5).title(title).message(message)) { toast in
toast.onTapped { toast in
toast.pop()
testAlert()
}
}
}
section.add(title: "增加按钮") {
let title = "您收到了一条好友申请"
let message = "丹妮莉丝·坦格利安申请添加您为好友,是否同意?"
Toast(.title(title).message(message)) { toast in
toast.isRemovable = false
toast.vm.icon = UIImage(named: "avatar")
toast.imageView.layer.masksToBounds = true
toast.imageView.layer.cornerRadius = toast.config.iconSize.width / 2
toast.add(action: "拒绝", style: .destructive) { toast in
Alert.lazyPush(identifier: "Dracarys") { alert in
alert.vm = .message("Dracarys")
alert.vm.icon = UIImage(inProHUD: "prohud.windmill")
alert.vm.rotation = .init(repeatCount: .infinity)
alert.config.enableShadow = false
alert.config.contentViewMask { mask in
mask.effect = .none
mask.backgroundColor = .clear
}
alert.config.backgroundViewMask { mask in
mask.backgroundColor = .systemRed
}
alert.config.iconSize = .init(width: 64, height: 64)
alert.config.boldTextFont = .init(name: "Papyrus", size: 40)
alert.config.dynamicTextColor = .white
}
}
toast.add(action: "同意") { toast in
Alert.find(identifier: "Dracarys")?.pop()
toast.pop()
}
}
}
section.add(title: "禁止手势移除") {
let title = "这条消息很重要"
let message = "向上滑动将不会移除消息,您必须手动处理,用于重要但非阻塞性的事件。(通过代码处理或者在点击事件处理)"
Toast(.warning.title(title).message(message)) { toast in
toast.isRemovable = false
toast.onTapped { toast in
toast.pop()
testAlert()
}
}
}
}
list.add(title: "自定义视图") { section in
section.add(title: "图片") {
Toast { toast in
toast.config.cardMaxHeight = 200 //
let imgv = UIImageView(image: UIImage(named: "landscape"))
imgv.contentMode = .scaleAspectFill
toast.add(customView: imgv).snp.makeConstraints { make in
make.edges.equalToSuperview()
}
toast.onTapped { toast in
toast.pop()
}
}
}
section.add(title: "其它控件") {
Toast { toast in
toast.config.cardMaxHeight = 200 //
let stack = UIStackView()
stack.axis = .vertical
stack.distribution = .fill
stack.spacing = 8
stack.alignment = .fill
let lb = UILabel()
lb.font = .systemFont(ofSize: 20, weight: .bold)
lb.text = "Custom Toast"
lb.textAlignment = .center
stack.addArrangedSubview(lb)
let btn1 = ProHUD.Button(config: toast.config, action: .init(style: .gray, title: "取消"))
btn1.onTouchUpInside { action in
print("点击了取消")
testAlert()
}
let btn2 = ProHUD.Button(config: toast.config, action: .init(style: .tinted, title: "确定"))
btn2.onTouchUp { action in
print("点击了确定")
testAlert()
}
let actions = UIStackView(arrangedSubviews: [btn1, btn2])
actions.axis = .horizontal
actions.distribution = .fillEqually
actions.spacing = 8
actions.alignment = .fill
stack.addArrangedSubview(actions)
actions.snp.makeConstraints { make in
make.height.equalTo(40)
}
toast.add(customView: stack).snp.makeConstraints { make in
make.edges.equalToSuperview().inset(8)
}
toast.onTapped { toast in
toast.pop()
}
}
}
section.add(title: "卡片背景样式") {
Toast { toast in
toast.vm.title = "卡片背景样式"
toast.add(action: "浅色毛玻璃") { toast in
toast.contentMaskView.effect = UIBlurEffect(style: .light)
toast.contentMaskView.backgroundColor = .clear
}
toast.add(action: "深色毛玻璃") { toast in
toast.contentMaskView.effect = UIBlurEffect(style: .dark)
toast.contentMaskView.backgroundColor = .clear
}
toast.add(action: "纯色") { toast in
toast.contentMaskView.effect = .none
toast.contentMaskView.backgroundColor = .red.lighten()
}
}
}
section.add(title: "共享配置") {
func foo() {
Toast { toast in
toast.title = "共享配置"
toast.vm.message = "建议在App启动后进行通用配置设置所有实例都会先拉取通用配置为默认值修改这些配置会影响到所有实例。"
toast.add(action: "默认", style: .gray) { toast in
Toast.Configuration.shared { config in
config.titleFont = .systemFont(ofSize: 19, weight: .bold)
}
toast.pop()
foo()
}
toast.add(action: "大号标题") { toast in
Toast.Configuration.shared { config in
config.titleFont = .systemFont(ofSize: 28, weight: .medium)
}
toast.pop()
foo()
}
}
}
foo()
}
}
}
}
fileprivate func testAlert() {
Alert { alert in
alert.vm.title = "处理点击事件"
alert.add(action: "我知道了", style: .destructive)
}
}

View File

@ -6,8 +6,8 @@
"repositoryURL": "https://github.com/xaoxuu/Inspire.git", "repositoryURL": "https://github.com/xaoxuu/Inspire.git",
"state": { "state": {
"branch": null, "branch": null,
"revision": "cad0c64e6995a06ee3bf3ed7c632ad27c1b8ffb1", "revision": "05bdbf23e380b7b283f9ef5c5115e1c1e1d1ad97",
"version": "2.0.0" "version": "2.2.0"
} }
}, },
{ {
@ -15,8 +15,8 @@
"repositoryURL": "https://github.com/SnapKit/SnapKit.git", "repositoryURL": "https://github.com/SnapKit/SnapKit.git",
"state": { "state": {
"branch": null, "branch": null,
"revision": "d458564516e5676af9c70b4f4b2a9178294f1bc6", "revision": "f222cbdf325885926566172f6f5f06af95473158",
"version": "5.0.1" "version": "5.6.0"
} }
} }
] ]

View File

@ -1,4 +1,4 @@
// swift-tools-version:5.3 // swift-tools-version:5.6
import PackageDescription import PackageDescription
@ -10,15 +10,13 @@ let package = Package(
], ],
dependencies: [ dependencies: [
.package(url: "https://github.com/SnapKit/SnapKit.git", "5.0.0" ..< "6.0.0"), .package(url: "https://github.com/SnapKit/SnapKit.git", "5.0.0" ..< "6.0.0"),
.package(url: "https://github.com/xaoxuu/Inspire.git", "2.1.0" ..< "3.0.0"), .package(url: "https://github.com/xaoxuu/Inspire.git", "3.0.0" ..< "4.0.0"),
], ],
targets: [ targets: [
.target( .target(
name: "ProHUD", name: "ProHUD",
dependencies: ["SnapKit", "Inspire"], dependencies: ["SnapKit", "Inspire"],
path: "Source", resources: [.process("Resources/ProHUD.xcassets")]
resources: [.process("ProHUD.xcassets")]
) )
], ]
swiftLanguageVersions: [.v5]
) )

14
Podfile
View File

@ -1,14 +0,0 @@
platform :ios, '9.0'
use_frameworks!
target 'ProHUD' do
# pod 'SnapKit', '5.0.1'
# pod 'Inspire', '1.1.0' # :path => '../Inspire'
end
#pod install --verbose --no-repo-update #安装命令
#pod update --verbose --no-repo-update #更新命令

View File

@ -1,3 +0,0 @@
PODFILE CHECKSUM: 6cebb4bc46375d38fc36a728dcb33f3b7ec0c396
COCOAPODS: 1.10.1

View File

@ -1,20 +0,0 @@
Pod::Spec.new do |s|
s.name = 'ProHUD'
s.version = "1.0"
s.license = 'MIT'
s.summary = '可完全定制化的HUD包含顶部区域的Toast中央区域的Alert和底部区域的ActionSheet。'
s.homepage = "http://xaoxuu.com"
s.authors = { 'xaoxuu' => 'xaoxuu@gmail.com' }
s.source = { :git => "https://github.com/xaoxuu/ProHUD.git", :tag => "#{s.version}", :submodules => false}
s.ios.deployment_target = '10.0'
s.source_files = 'Source/**/*.swift'
s.resource_bundles = { 'ProHUD' => ['Source/**/*.{xcassets,strings,xml,storyboard,xib,xcdatamodeld,gif,lproj}'] }
s.requires_arc = true
s.swift_version = '5.0'
s.dependency 'SnapKit', '5.0'
s.dependency 'Inspire'
end

View File

@ -1,528 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 52;
objects = {
/* Begin PBXBuildFile section */
36CB9DEED3C3E823FE7B1C75 /* Pods_ProHUD.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C2011798511AD590A613E54E /* Pods_ProHUD.framework */; };
CD16490B22EF09AB0077988C /* AlertModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD16490A22EF09AB0077988C /* AlertModel.swift */; };
CD16490D22EF09B40077988C /* AlertConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD16490C22EF09B40077988C /* AlertConfig.swift */; };
CD16491222EF0D900077988C /* HUDView.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD16491122EF0D900077988C /* HUDView.swift */; };
CD16491422EF12220077988C /* ProHUD.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = CD16491322EF12220077988C /* ProHUD.xcassets */; };
CD6CD86C22F1858F00F4FD4A /* ToastModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6CD86B22F1858F00F4FD4A /* ToastModel.swift */; };
CD6CD87022F185A700F4FD4A /* ToastController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6CD86F22F185A700F4FD4A /* ToastController.swift */; };
CD6CD87222F185AF00F4FD4A /* ToastConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6CD87122F185AF00F4FD4A /* ToastConfig.swift */; };
CD6CD87522F185C200F4FD4A /* GuardController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6CD87422F185C200F4FD4A /* GuardController.swift */; };
CD6CD87922F185D000F4FD4A /* GuardConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD6CD87822F185D000F4FD4A /* GuardConfig.swift */; };
CD95D22122E72C4C007559A3 /* ProHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = CD95D21F22E72C4C007559A3 /* ProHUD.h */; settings = {ATTRIBUTES = (Public, ); }; };
CD95D26922E72DA1007559A3 /* AlertController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD95D26822E72DA1007559A3 /* AlertController.swift */; };
CD95D26B22E72DB3007559A3 /* ProHUD.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD95D26A22E72DB3007559A3 /* ProHUD.swift */; };
CDB6A07B22EEF06500AF6CF0 /* HUDController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDB6A07A22EEF06500AF6CF0 /* HUDController.swift */; };
CDB6A07D22EEF19D00AF6CF0 /* HUDConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDB6A07C22EEF19D00AF6CF0 /* HUDConfig.swift */; };
CDC39CFD22FD6DDF0070E914 /* GuardModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDC39CFC22FD6DDF0070E914 /* GuardModel.swift */; };
CDC67BE92490A19100CC6FE6 /* SnapKit in Frameworks */ = {isa = PBXBuildFile; productRef = CDC67BE82490A19100CC6FE6 /* SnapKit */; };
CDC67BEC2490A1D100CC6FE6 /* Inspire in Frameworks */ = {isa = PBXBuildFile; productRef = CDC67BEB2490A1D100CC6FE6 /* Inspire */; };
CDF2C58924A0572C002ECDD5 /* HUDUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDF2C58824A0572C002ECDD5 /* HUDUtils.swift */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
3C95FD2F17A45D13E2AB9306 /* Pods-ProHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProHUD.debug.xcconfig"; path = "Pods/Target Support Files/Pods-ProHUD/Pods-ProHUD.debug.xcconfig"; sourceTree = "<group>"; };
C2011798511AD590A613E54E /* Pods_ProHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_ProHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CD16490A22EF09AB0077988C /* AlertModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertModel.swift; sourceTree = "<group>"; };
CD16490C22EF09B40077988C /* AlertConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertConfig.swift; sourceTree = "<group>"; };
CD16491122EF0D900077988C /* HUDView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDView.swift; sourceTree = "<group>"; };
CD16491322EF12220077988C /* ProHUD.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = ProHUD.xcassets; sourceTree = "<group>"; };
CD6CD86B22F1858F00F4FD4A /* ToastModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastModel.swift; sourceTree = "<group>"; };
CD6CD86F22F185A700F4FD4A /* ToastController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastController.swift; sourceTree = "<group>"; };
CD6CD87122F185AF00F4FD4A /* ToastConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ToastConfig.swift; sourceTree = "<group>"; };
CD6CD87422F185C200F4FD4A /* GuardController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardController.swift; sourceTree = "<group>"; };
CD6CD87822F185D000F4FD4A /* GuardConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardConfig.swift; sourceTree = "<group>"; };
CD95D21C22E72C4C007559A3 /* ProHUD.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ProHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; };
CD95D21F22E72C4C007559A3 /* ProHUD.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ProHUD.h; sourceTree = "<group>"; };
CD95D22022E72C4C007559A3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CD95D26722E72D68007559A3 /* ProHUD.podspec */ = {isa = PBXFileReference; lastKnownFileType = text; path = ProHUD.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
CD95D26822E72DA1007559A3 /* AlertController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AlertController.swift; sourceTree = "<group>"; };
CD95D26A22E72DB3007559A3 /* ProHUD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProHUD.swift; sourceTree = "<group>"; };
CDB6A07A22EEF06500AF6CF0 /* HUDController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDController.swift; sourceTree = "<group>"; };
CDB6A07C22EEF19D00AF6CF0 /* HUDConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDConfig.swift; sourceTree = "<group>"; };
CDC39CFC22FD6DDF0070E914 /* GuardModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuardModel.swift; sourceTree = "<group>"; };
CDF2C58824A0572C002ECDD5 /* HUDUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HUDUtils.swift; sourceTree = "<group>"; };
DC31EBFAC56868D6096A233A /* Pods-ProHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ProHUD.release.xcconfig"; path = "Pods/Target Support Files/Pods-ProHUD/Pods-ProHUD.release.xcconfig"; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
CD95D21922E72C4C007559A3 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CDC67BEC2490A1D100CC6FE6 /* Inspire in Frameworks */,
CDC67BE92490A19100CC6FE6 /* SnapKit in Frameworks */,
36CB9DEED3C3E823FE7B1C75 /* Pods_ProHUD.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
33E080A4BE17176DF10FFA89 /* Pods */ = {
isa = PBXGroup;
children = (
3C95FD2F17A45D13E2AB9306 /* Pods-ProHUD.debug.xcconfig */,
DC31EBFAC56868D6096A233A /* Pods-ProHUD.release.xcconfig */,
);
name = Pods;
sourceTree = "<group>";
};
BA9A12AB2B7D4F5C9A8C773C /* Frameworks */ = {
isa = PBXGroup;
children = (
C2011798511AD590A613E54E /* Pods_ProHUD.framework */,
);
name = Frameworks;
sourceTree = "<group>";
};
CD16491022EF0A4B0077988C /* Alert */ = {
isa = PBXGroup;
children = (
CD95D26822E72DA1007559A3 /* AlertController.swift */,
CD16490A22EF09AB0077988C /* AlertModel.swift */,
CD16490C22EF09B40077988C /* AlertConfig.swift */,
);
path = Alert;
sourceTree = "<group>";
};
CD6CD87322F185B400F4FD4A /* Toast */ = {
isa = PBXGroup;
children = (
CD6CD86B22F1858F00F4FD4A /* ToastModel.swift */,
CD6CD86F22F185A700F4FD4A /* ToastController.swift */,
CD6CD87122F185AF00F4FD4A /* ToastConfig.swift */,
);
path = Toast;
sourceTree = "<group>";
};
CD6CD87C22F185DA00F4FD4A /* Guard */ = {
isa = PBXGroup;
children = (
CD6CD87422F185C200F4FD4A /* GuardController.swift */,
CD6CD87822F185D000F4FD4A /* GuardConfig.swift */,
CDC39CFC22FD6DDF0070E914 /* GuardModel.swift */,
);
path = Guard;
sourceTree = "<group>";
};
CD95D21222E72C4C007559A3 = {
isa = PBXGroup;
children = (
CD95D26722E72D68007559A3 /* ProHUD.podspec */,
CDC67BED2490A28500CC6FE6 /* Source */,
CD95D21E22E72C4C007559A3 /* ProHUD */,
CD95D21D22E72C4C007559A3 /* Products */,
33E080A4BE17176DF10FFA89 /* Pods */,
BA9A12AB2B7D4F5C9A8C773C /* Frameworks */,
);
sourceTree = "<group>";
};
CD95D21D22E72C4C007559A3 /* Products */ = {
isa = PBXGroup;
children = (
CD95D21C22E72C4C007559A3 /* ProHUD.framework */,
);
name = Products;
sourceTree = "<group>";
};
CD95D21E22E72C4C007559A3 /* ProHUD */ = {
isa = PBXGroup;
children = (
CD95D22022E72C4C007559A3 /* Info.plist */,
);
path = ProHUD;
sourceTree = "<group>";
};
CDC67BED2490A28500CC6FE6 /* Source */ = {
isa = PBXGroup;
children = (
CD95D21F22E72C4C007559A3 /* ProHUD.h */,
CD16491322EF12220077988C /* ProHUD.xcassets */,
CD95D26A22E72DB3007559A3 /* ProHUD.swift */,
CDB6A07C22EEF19D00AF6CF0 /* HUDConfig.swift */,
CDB6A07A22EEF06500AF6CF0 /* HUDController.swift */,
CD16491122EF0D900077988C /* HUDView.swift */,
CDF2C58824A0572C002ECDD5 /* HUDUtils.swift */,
CD6CD87322F185B400F4FD4A /* Toast */,
CD16491022EF0A4B0077988C /* Alert */,
CD6CD87C22F185DA00F4FD4A /* Guard */,
);
path = Source;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
CD95D21722E72C4C007559A3 /* Headers */ = {
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
CD95D22122E72C4C007559A3 /* ProHUD.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXHeadersBuildPhase section */
/* Begin PBXNativeTarget section */
CD95D21B22E72C4C007559A3 /* ProHUD */ = {
isa = PBXNativeTarget;
buildConfigurationList = CD95D22422E72C4C007559A3 /* Build configuration list for PBXNativeTarget "ProHUD" */;
buildPhases = (
A54F2DB69A2889EF6E75A3EC /* [CP] Check Pods Manifest.lock */,
CD95D21722E72C4C007559A3 /* Headers */,
CD95D21822E72C4C007559A3 /* Sources */,
CD95D21922E72C4C007559A3 /* Frameworks */,
CD95D21A22E72C4C007559A3 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = ProHUD;
packageProductDependencies = (
CDC67BE82490A19100CC6FE6 /* SnapKit */,
CDC67BEB2490A1D100CC6FE6 /* Inspire */,
);
productName = ProHUD;
productReference = CD95D21C22E72C4C007559A3 /* ProHUD.framework */;
productType = "com.apple.product-type.framework";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CD95D21322E72C4C007559A3 /* Project object */ = {
isa = PBXProject;
attributes = {
LastUpgradeCheck = 1100;
ORGANIZATIONNAME = "Titan Studio";
TargetAttributes = {
CD95D21B22E72C4C007559A3 = {
CreatedOnToolsVersion = 11.0;
LastSwiftMigration = 1100;
};
};
};
buildConfigurationList = CD95D21622E72C4C007559A3 /* Build configuration list for PBXProject "ProHUD" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CD95D21222E72C4C007559A3;
packageReferences = (
CDC67BE72490A19100CC6FE6 /* XCRemoteSwiftPackageReference "SnapKit" */,
CDC67BEA2490A1D100CC6FE6 /* XCRemoteSwiftPackageReference "Inspire" */,
);
productRefGroup = CD95D21D22E72C4C007559A3 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CD95D21B22E72C4C007559A3 /* ProHUD */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
CD95D21A22E72C4C007559A3 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CD16491422EF12220077988C /* ProHUD.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
A54F2DB69A2889EF6E75A3EC /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;
buildActionMask = 2147483647;
files = (
);
inputFileListPaths = (
);
inputPaths = (
"${PODS_PODFILE_DIR_PATH}/Podfile.lock",
"${PODS_ROOT}/Manifest.lock",
);
name = "[CP] Check Pods Manifest.lock";
outputFileListPaths = (
);
outputPaths = (
"$(DERIVED_FILE_DIR)/Pods-ProHUD-checkManifestLockResult.txt",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
showEnvVarsInLog = 0;
};
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
CD95D21822E72C4C007559A3 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CD95D26922E72DA1007559A3 /* AlertController.swift in Sources */,
CD6CD87922F185D000F4FD4A /* GuardConfig.swift in Sources */,
CDB6A07D22EEF19D00AF6CF0 /* HUDConfig.swift in Sources */,
CD6CD87222F185AF00F4FD4A /* ToastConfig.swift in Sources */,
CD6CD87522F185C200F4FD4A /* GuardController.swift in Sources */,
CD6CD87022F185A700F4FD4A /* ToastController.swift in Sources */,
CD95D26B22E72DB3007559A3 /* ProHUD.swift in Sources */,
CD16490D22EF09B40077988C /* AlertConfig.swift in Sources */,
CD6CD86C22F1858F00F4FD4A /* ToastModel.swift in Sources */,
CD16490B22EF09AB0077988C /* AlertModel.swift in Sources */,
CD16491222EF0D900077988C /* HUDView.swift in Sources */,
CDF2C58924A0572C002ECDD5 /* HUDUtils.swift in Sources */,
CDB6A07B22EEF06500AF6CF0 /* HUDController.swift in Sources */,
CDC39CFD22FD6DDF0070E914 /* GuardModel.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
CD95D22222E72C4C007559A3 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = dwarf;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Debug;
};
CD95D22322E72C4C007559A3 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_ANALYZER_NONNULL = YES;
CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_ENABLE_OBJC_WEAK = YES;
CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_COMMA = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INFINITE_RECURSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
CLANG_WARN_STRICT_PROTOTYPES = YES;
CLANG_WARN_SUSPICIOUS_MOVE = YES;
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 1;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu11;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 10.0;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
VERSIONING_SYSTEM = "apple-generic";
VERSION_INFO_PREFIX = "";
};
name = Release;
};
CD95D22522E72C4C007559A3 /* Debug */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = 3C95FD2F17A45D13E2AB9306 /* Pods-ProHUD.debug.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 34W5TB5KD2;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = ProHUD/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.ProHUD;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SUPPORTS_MACCATALYST = NO;
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CD95D22622E72C4C007559A3 /* Release */ = {
isa = XCBuildConfiguration;
baseConfigurationReference = DC31EBFAC56868D6096A233A /* Pods-ProHUD.release.xcconfig */;
buildSettings = {
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_STYLE = Automatic;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = 34W5TB5KD2;
DYLIB_COMPATIBILITY_VERSION = 1;
DYLIB_CURRENT_VERSION = 1;
DYLIB_INSTALL_NAME_BASE = "@rpath";
INFOPLIST_FILE = ProHUD/Info.plist;
INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@loader_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = com.xaoxuu.ProHUD;
PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
SKIP_INSTALL = YES;
SUPPORTS_MACCATALYST = NO;
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
CD95D21622E72C4C007559A3 /* Build configuration list for PBXProject "ProHUD" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CD95D22222E72C4C007559A3 /* Debug */,
CD95D22322E72C4C007559A3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CD95D22422E72C4C007559A3 /* Build configuration list for PBXNativeTarget "ProHUD" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CD95D22522E72C4C007559A3 /* Debug */,
CD95D22622E72C4C007559A3 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
/* Begin XCRemoteSwiftPackageReference section */
CDC67BE72490A19100CC6FE6 /* XCRemoteSwiftPackageReference "SnapKit" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/SnapKit/SnapKit";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 5.0.1;
};
};
CDC67BEA2490A1D100CC6FE6 /* XCRemoteSwiftPackageReference "Inspire" */ = {
isa = XCRemoteSwiftPackageReference;
repositoryURL = "https://github.com/xaoxuu/Inspire";
requirement = {
kind = upToNextMajorVersion;
minimumVersion = 2.1.0;
};
};
/* End XCRemoteSwiftPackageReference section */
/* Begin XCSwiftPackageProductDependency section */
CDC67BE82490A19100CC6FE6 /* SnapKit */ = {
isa = XCSwiftPackageProductDependency;
package = CDC67BE72490A19100CC6FE6 /* XCRemoteSwiftPackageReference "SnapKit" */;
productName = SnapKit;
};
CDC67BEB2490A1D100CC6FE6 /* Inspire */ = {
isa = XCSwiftPackageProductDependency;
package = CDC67BEA2490A1D100CC6FE6 /* XCRemoteSwiftPackageReference "Inspire" */;
productName = Inspire;
};
/* End XCSwiftPackageProductDependency section */
};
rootObject = CD95D21322E72C4C007559A3 /* Project object */;
}

View File

@ -1,7 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:">
</FileRef>
</Workspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,25 +0,0 @@
{
"object": {
"pins": [
{
"package": "Inspire",
"repositoryURL": "https://github.com/xaoxuu/Inspire",
"state": {
"branch": null,
"revision": "fed13e3530ca38f884d190ea5c7b12b8f3b2a41b",
"version": "2.0.0"
}
},
{
"package": "SnapKit",
"repositoryURL": "https://github.com/SnapKit/SnapKit",
"state": {
"branch": null,
"revision": "d458564516e5676af9c70b4f4b2a9178294f1bc6",
"version": "5.0.1"
}
}
]
},
"version": 1
}

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:ProHUD.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

View File

@ -1,8 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>IDEDidComputeMac32BitWarning</key>
<true/>
</dict>
</plist>

View File

@ -1,25 +0,0 @@
{
"object": {
"pins": [
{
"package": "Inspire",
"repositoryURL": "https://github.com/xaoxuu/Inspire",
"state": {
"branch": null,
"revision": "cad0c64e6995a06ee3bf3ed7c632ad27c1b8ffb1",
"version": "2.0.0"
}
},
{
"package": "SnapKit",
"repositoryURL": "https://github.com/SnapKit/SnapKit",
"state": {
"branch": null,
"revision": "d458564516e5676af9c70b4f4b2a9178294f1bc6",
"version": "5.0.1"
}
}
]
},
"version": 1
}

View File

@ -1,22 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
</dict>
</plist>

View File

@ -90,7 +90,7 @@ Toast.push(scene: .warning, title: "设备电量过低", message: "请及时对
toast.isRemovable = false toast.isRemovable = false
// 监听点击事件 // 监听点击事件
toast.didTapped { toast.didTapped {
debugPrint("点击了这条横幅") print("点击了这条横幅")
} }
} }
``` ```

Some files were not shown because too many files have changed in this diff Show More