我的第一次提交

master
liu 3 years ago
parent 8a4b3bba89
commit 72ce5557a9

BIN
.DS_Store vendored

Binary file not shown.

@ -0,0 +1,469 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 50;
objects = {
/* Begin PBXBuildFile section */
1F4E431525C3F03D00FDD27B /* FirstAppApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E431425C3F03D00FDD27B /* FirstAppApp.swift */; };
1F4E431725C3F03D00FDD27B /* ContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E431625C3F03D00FDD27B /* ContentView.swift */; };
1F4E431925C3F03E00FDD27B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F4E431825C3F03E00FDD27B /* Assets.xcassets */; };
1F4E431C25C3F03E00FDD27B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1F4E431B25C3F03E00FDD27B /* Preview Assets.xcassets */; };
1F4E432725C500DA00FDD27B /* CardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E432625C500DA00FDD27B /* CardView.swift */; };
1F4E432D25C69FDD00FDD27B /* CardModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E432C25C69FDD00FDD27B /* CardModel.swift */; };
1F4E433025C6B4D900FDD27B /* CardData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F4E432F25C6B4D900FDD27B /* CardData.swift */; };
1FAA7E1B25C6F27500E4E64C /* sound-transitions.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 1FAA7E1A25C6F27500E4E64C /* sound-transitions.mp3 */; };
1FAA7E1E25C6F2B400E4E64C /* PlaySound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAA7E1D25C6F2B400E4E64C /* PlaySound.swift */; };
1FAA7E2525C7D6EA00E4E64C /* Stickers.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1FAA7E2425C7D6EA00E4E64C /* Stickers.xcassets */; };
1FAA7E2925C7D6EA00E4E64C /* stickers.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 1FAA7E2225C7D6E900E4E64C /* stickers.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
1FAA7E2725C7D6EA00E4E64C /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 1F4E430925C3F03D00FDD27B /* Project object */;
proxyType = 1;
remoteGlobalIDString = 1FAA7E2125C7D6E900E4E64C;
remoteInfo = stickers;
};
/* End PBXContainerItemProxy section */
/* Begin PBXCopyFilesBuildPhase section */
1FAA7E2D25C7D6EA00E4E64C /* Embed App Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
1FAA7E2925C7D6EA00E4E64C /* stickers.appex in Embed App Extensions */,
);
name = "Embed App Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
1F4E431125C3F03D00FDD27B /* FirstApp.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FirstApp.app; sourceTree = BUILT_PRODUCTS_DIR; };
1F4E431425C3F03D00FDD27B /* FirstAppApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FirstAppApp.swift; sourceTree = "<group>"; };
1F4E431625C3F03D00FDD27B /* ContentView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentView.swift; sourceTree = "<group>"; };
1F4E431825C3F03E00FDD27B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
1F4E431B25C3F03E00FDD27B /* Preview Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = "Preview Assets.xcassets"; sourceTree = "<group>"; };
1F4E431D25C3F03E00FDD27B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1F4E432625C500DA00FDD27B /* CardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardView.swift; sourceTree = "<group>"; };
1F4E432C25C69FDD00FDD27B /* CardModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardModel.swift; sourceTree = "<group>"; };
1F4E432F25C6B4D900FDD27B /* CardData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CardData.swift; sourceTree = "<group>"; };
1FAA7E1A25C6F27500E4E64C /* sound-transitions.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = "sound-transitions.mp3"; sourceTree = "<group>"; };
1FAA7E1D25C6F2B400E4E64C /* PlaySound.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaySound.swift; sourceTree = "<group>"; };
1FAA7E2225C7D6E900E4E64C /* stickers.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = stickers.appex; sourceTree = BUILT_PRODUCTS_DIR; };
1FAA7E2425C7D6EA00E4E64C /* Stickers.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Stickers.xcassets; sourceTree = "<group>"; };
1FAA7E2625C7D6EA00E4E64C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1F4E430E25C3F03D00FDD27B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
1F4E430825C3F03D00FDD27B = {
isa = PBXGroup;
children = (
1F4E431325C3F03D00FDD27B /* FirstApp */,
1FAA7E2325C7D6E900E4E64C /* stickers */,
1F4E431225C3F03D00FDD27B /* Products */,
);
sourceTree = "<group>";
};
1F4E431225C3F03D00FDD27B /* Products */ = {
isa = PBXGroup;
children = (
1F4E431125C3F03D00FDD27B /* FirstApp.app */,
1FAA7E2225C7D6E900E4E64C /* stickers.appex */,
);
name = Products;
sourceTree = "<group>";
};
1F4E431325C3F03D00FDD27B /* FirstApp */ = {
isa = PBXGroup;
children = (
1F4E431425C3F03D00FDD27B /* FirstAppApp.swift */,
1F4E431625C3F03D00FDD27B /* ContentView.swift */,
1F4E432625C500DA00FDD27B /* CardView.swift */,
1F4E431825C3F03E00FDD27B /* Assets.xcassets */,
1F4E431D25C3F03E00FDD27B /* Info.plist */,
1F4E431A25C3F03E00FDD27B /* Preview Content */,
1F4E432C25C69FDD00FDD27B /* CardModel.swift */,
1F4E432F25C6B4D900FDD27B /* CardData.swift */,
1FAA7E1A25C6F27500E4E64C /* sound-transitions.mp3 */,
1FAA7E1D25C6F2B400E4E64C /* PlaySound.swift */,
);
path = FirstApp;
sourceTree = "<group>";
};
1F4E431A25C3F03E00FDD27B /* Preview Content */ = {
isa = PBXGroup;
children = (
1F4E431B25C3F03E00FDD27B /* Preview Assets.xcassets */,
);
path = "Preview Content";
sourceTree = "<group>";
};
1FAA7E2325C7D6E900E4E64C /* stickers */ = {
isa = PBXGroup;
children = (
1FAA7E2425C7D6EA00E4E64C /* Stickers.xcassets */,
1FAA7E2625C7D6EA00E4E64C /* Info.plist */,
);
path = stickers;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1F4E431025C3F03D00FDD27B /* FirstApp */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1F4E432025C3F03E00FDD27B /* Build configuration list for PBXNativeTarget "FirstApp" */;
buildPhases = (
1F4E430D25C3F03D00FDD27B /* Sources */,
1F4E430E25C3F03D00FDD27B /* Frameworks */,
1F4E430F25C3F03D00FDD27B /* Resources */,
1FAA7E2D25C7D6EA00E4E64C /* Embed App Extensions */,
);
buildRules = (
);
dependencies = (
1FAA7E2825C7D6EA00E4E64C /* PBXTargetDependency */,
);
name = FirstApp;
productName = FirstApp;
productReference = 1F4E431125C3F03D00FDD27B /* FirstApp.app */;
productType = "com.apple.product-type.application";
};
1FAA7E2125C7D6E900E4E64C /* stickers */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1FAA7E2A25C7D6EA00E4E64C /* Build configuration list for PBXNativeTarget "stickers" */;
buildPhases = (
1FAA7E2025C7D6E900E4E64C /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = stickers;
productName = stickers;
productReference = 1FAA7E2225C7D6E900E4E64C /* stickers.appex */;
productType = "com.apple.product-type.app-extension.messages-sticker-pack";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
1F4E430925C3F03D00FDD27B /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 1240;
LastUpgradeCheck = 1250;
TargetAttributes = {
1F4E431025C3F03D00FDD27B = {
CreatedOnToolsVersion = 12.4;
};
1FAA7E2125C7D6E900E4E64C = {
CreatedOnToolsVersion = 12.4;
};
};
};
buildConfigurationList = 1F4E430C25C3F03D00FDD27B /* Build configuration list for PBXProject "FirstApp" */;
compatibilityVersion = "Xcode 9.3";
developmentRegion = en;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 1F4E430825C3F03D00FDD27B;
productRefGroup = 1F4E431225C3F03D00FDD27B /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
1F4E431025C3F03D00FDD27B /* FirstApp */,
1FAA7E2125C7D6E900E4E64C /* stickers */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1F4E430F25C3F03D00FDD27B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1F4E431C25C3F03E00FDD27B /* Preview Assets.xcassets in Resources */,
1F4E431925C3F03E00FDD27B /* Assets.xcassets in Resources */,
1FAA7E1B25C6F27500E4E64C /* sound-transitions.mp3 in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
1FAA7E2025C7D6E900E4E64C /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1FAA7E2525C7D6EA00E4E64C /* Stickers.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1F4E430D25C3F03D00FDD27B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1F4E433025C6B4D900FDD27B /* CardData.swift in Sources */,
1FAA7E1E25C6F2B400E4E64C /* PlaySound.swift in Sources */,
1F4E431725C3F03D00FDD27B /* ContentView.swift in Sources */,
1F4E432D25C69FDD00FDD27B /* CardModel.swift in Sources */,
1F4E432725C500DA00FDD27B /* CardView.swift in Sources */,
1F4E431525C3F03D00FDD27B /* FirstAppApp.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
1FAA7E2825C7D6EA00E4E64C /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 1FAA7E2125C7D6E900E4E64C /* stickers */;
targetProxy = 1FAA7E2725C7D6EA00E4E64C /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
1F4E431E25C3F03E00FDD27B /* 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_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 = 14.4;
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;
};
1F4E431F25C3F03E00FDD27B /* 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_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 = 14.4;
MTL_ENABLE_DEBUG_INFO = NO;
MTL_FAST_MATH = YES;
SDKROOT = iphoneos;
SWIFT_COMPILATION_MODE = wholemodule;
SWIFT_OPTIMIZATION_LEVEL = "-O";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
1F4E432125C3F03E00FDD27B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "\"FirstApp/Preview Content\"";
DEVELOPMENT_TEAM = Z3W45GNWDZ;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = FirstApp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FirstApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
1F4E432225C3F03E00FDD27B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_ASSET_PATHS = "\"FirstApp/Preview Content\"";
DEVELOPMENT_TEAM = Z3W45GNWDZ;
ENABLE_PREVIEWS = YES;
INFOPLIST_FILE = FirstApp/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
);
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FirstApp;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_VERSION = 5.0;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
1FAA7E2B25C7D6EA00E4E64C /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Z3W45GNWDZ;
INFOPLIST_FILE = stickers/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FirstApp.stickers;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
1FAA7E2C25C7D6EA00E4E64C /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = "iMessage App Icon";
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = Z3W45GNWDZ;
INFOPLIST_FILE = stickers/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
PRODUCT_BUNDLE_IDENTIFIER = cn.liuming.FirstApp.stickers;
PRODUCT_NAME = "$(TARGET_NAME)";
SKIP_INSTALL = YES;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1F4E430C25C3F03D00FDD27B /* Build configuration list for PBXProject "FirstApp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1F4E431E25C3F03E00FDD27B /* Debug */,
1F4E431F25C3F03E00FDD27B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1F4E432025C3F03E00FDD27B /* Build configuration list for PBXNativeTarget "FirstApp" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1F4E432125C3F03E00FDD27B /* Debug */,
1F4E432225C3F03E00FDD27B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1FAA7E2A25C7D6EA00E4E64C /* Build configuration list for PBXNativeTarget "stickers" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1FAA7E2B25C7D6EA00E4E64C /* Debug */,
1FAA7E2C25C7D6EA00E4E64C /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 1F4E430925C3F03D00FDD27B /* Project object */;
}

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

@ -0,0 +1,8 @@
<?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>

@ -0,0 +1,19 @@
<?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>SchemeUserState</key>
<dict>
<key>FirstApp.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>stickers.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
</dict>
</plist>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<Bucket
uuid = "4B6BDC8D-AE1A-4220-B00D-9FED51284ABA"
type = "1"
version = "2.0">
</Bucket>

@ -0,0 +1,19 @@
<?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>SchemeUserState</key>
<dict>
<key>FirstApp.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>0</integer>
</dict>
<key>stickers.xcscheme_^#shared#^_</key>
<dict>
<key>orderHint</key>
<integer>1</integer>
</dict>
</dict>
</dict>
</plist>

@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,116 @@
{
"images" : [
{
"filename" : "icon-20@2x-ipad.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "icon-20@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "20x20"
},
{
"filename" : "icon-29@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "icon-29@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "29x29"
},
{
"filename" : "icon-40@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "icon-40@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "40x40"
},
{
"filename" : "icon-60@2x.png",
"idiom" : "iphone",
"scale" : "2x",
"size" : "60x60"
},
{
"filename" : "icon-60@3x.png",
"idiom" : "iphone",
"scale" : "3x",
"size" : "60x60"
},
{
"filename" : "icon-20-ipad.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "20x20"
},
{
"filename" : "icon-20@2x-ipad-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "20x20"
},
{
"filename" : "icon-29-ipad.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "29x29"
},
{
"filename" : "icon-29@2x-ipad.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "29x29"
},
{
"filename" : "icon-40.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "40x40"
},
{
"filename" : "icon-40@2x-1.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "40x40"
},
{
"filename" : "icon-76.png",
"idiom" : "ipad",
"scale" : "1x",
"size" : "76x76"
},
{
"filename" : "icon-76@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "76x76"
},
{
"filename" : "icon-83.5@2x.png",
"idiom" : "ipad",
"scale" : "2x",
"size" : "83.5x83.5"
},
{
"filename" : "icon-1024.png",
"idiom" : "ios-marketing",
"scale" : "1x",
"size" : "1024x1024"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x00",
"green" : "0x71",
"red" : "0xFF"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.000",
"green" : "0.443",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x42",
"green" : "0x38",
"red" : "0xCE"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.259",
"green" : "0.220",
"red" : "0.808"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xD1",
"green" : "0xFF",
"red" : "0xA4"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.820",
"green" : "1.000",
"red" : "0.643"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xB3",
"green" : "0xD3",
"red" : "0xFF"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.702",
"green" : "0.827",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xCE",
"green" : "0xBB",
"red" : "0xFA"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.808",
"green" : "0.733",
"red" : "0.980"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x7D",
"green" : "0x0B",
"red" : "0xB5"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.490",
"green" : "0.043",
"red" : "0.710"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xE9",
"green" : "0xF2",
"red" : "0xFF"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.914",
"green" : "0.949",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xFF",
"green" : "0xD6",
"red" : "0xA1"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "0.839",
"red" : "0.631"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xBD",
"green" : "0xD8",
"red" : "0xFF"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.741",
"green" : "0.847",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x40",
"green" : "0xCD",
"red" : "0xF3"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.251",
"green" : "0.804",
"red" : "0.953"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xD9",
"green" : "0xE4",
"red" : "0xFA"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.851",
"green" : "0.894",
"red" : "0.980"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x00",
"green" : "0x28",
"red" : "0xA0"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.000",
"green" : "0.157",
"red" : "0.627"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0xFF",
"green" : "0xFF",
"red" : "0xFF"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "1.000",
"green" : "1.000",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0x6F",
"green" : "0x93",
"red" : "0xD4"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.435",
"green" : "0.576",
"red" : "0.831"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "0.600",
"blue" : "0.000",
"green" : "0.000",
"red" : "0.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "0.600",
"blue" : "0.000",
"green" : "0.000",
"red" : "0.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

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

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

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

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

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

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

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

@ -0,0 +1,38 @@
{
"colors" : [
{
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.000",
"green" : "0.578",
"red" : "1.000"
}
},
"idiom" : "universal"
},
{
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"color" : {
"color-space" : "srgb",
"components" : {
"alpha" : "1.000",
"blue" : "0.000",
"green" : "0.578",
"red" : "1.000"
}
},
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}

@ -0,0 +1,24 @@
{
"images" : [
{
"filename" : "launch-screen-image.svg",
"idiom" : "universal",
"scale" : "1x"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"preserves-vector-representation" : true
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 61 KiB

@ -0,0 +1,56 @@
//
// CardData.swift
// FirstApp
//
// Created by on 2021/1/31.
//
import SwiftUI
// MARK: -
let cardData: [Card] = [
Card(title: "SwiftUI",
headline: "如此美妙 不同凡响",
imageName: "developer-no1",
callToAction: "技术总监",
message: "态度决定一切,勤于思考,不断学习。",
gradientColors: [Color("Color01"), Color("Color02")]),
Card(title: "iOS 14",
headline: "从来没有如此梦幻的新面貌",
imageName: "developer-no2",
callToAction: "研发Leader",
message: "持续学习,不断进步,这不管是对女性工作者还是男性工作者,其实都是重要的。",
gradientColors: [Color("Color03"), Color("Color04")]),
Card(title: "Swift 5",
headline: "相信自己 不断前行",
imageName: "developer-no3",
callToAction: "首席架构师",
message: "架构分析,架构设计与实现,业务架构设计与实现,重构。",
gradientColors: [Color("Color05"), Color("Color06")]),
Card(title: "Catalyst",
headline: "Think Different",
imageName: "developer-no4",
callToAction: "高级程序员",
message: "我是主力干活者,有技术难题亲自攻克解决。",
gradientColors: [Color("Color07"), Color("Color08")]),
Card(title: "Playgrounds",
headline: "再一次 改变一切",
imageName: "developer-no5",
callToAction: "程序员",
message: "苹果改变世界的力量,牛顿通过苹果发现了万有引力,乔布斯通过苹果改变了世界。",
gradientColors: [Color("Color09"), Color("Color10")]),
Card(title: "Xcode 12",
headline: "最好的自己 最好的工具",
imageName: "developer-no6",
callToAction: "程序员",
message: "利用Xcode可以把你的想法变为现实。",
gradientColors: [Color("Color11"), Color("Color12")]),
Card(title: "Create ML",
headline: "Hello 未来",
imageName: "developer-no7",
callToAction: "产品测试员",
message: "信心,这是我作为一个女性从业者,从业以来最大的感受。希望女性程序员要自信起来,勇敢起来。",
gradientColors: [Color("Color13"), Color("Color14")])
]

@ -0,0 +1,19 @@
//
// CardModel.swift
// FirstApp
//
// Created by on 2021/1/31.
//
import SwiftUI
// MARK: -
struct Card: Identifiable {
var id = UUID()
var title: String
var headline: String
var imageName: String
var callToAction: String
var message: String
var gradientColors: [Color]
}

@ -0,0 +1,91 @@
//
// CardView.swift
// FirstApp
//
// Created by on 2021/1/30.
//
import SwiftUI
struct CardView: View {
// MARK: - Properties
var card: Card
@State private var fadeIn: Bool = false
@State private var moveDownward: Bool = false
@State private var moveUpward: Bool = false
@State private var showAlert: Bool = false
var hapticImpact = UIImpactFeedbackGenerator(style: .heavy)
// MARK: - Body
var body: some View {
ZStack {
Image(card.imageName)
.opacity(fadeIn ? 1.0 : 0.0)
VStack {
Text(card.title)
.font(.largeTitle)
.fontWeight(.heavy)
.foregroundColor(.white)
.multilineTextAlignment(.center)
Text(card.headline)
.fontWeight(.light)
.foregroundColor(.white)
.italic()
}
.offset(y: moveDownward ? -218 : -300)
Button(action: {
print("按钮被用户点击")
playSound(sound: "sound-transitions", type: "mp3")
hapticImpact.impactOccurred()
self.showAlert.toggle()
}){
HStack {
Text(card.callToAction)
.fontWeight(.heavy)
.foregroundColor(.white)
.accentColor(.white)
Image(systemName: "arrow.right.circle")
.font(Font.title.weight(.medium))
.accentColor(.white)
}
.padding(.vertical)
.padding(.horizontal, 24)
.background(LinearGradient(gradient: Gradient(colors: card.gradientColors), startPoint: .leading, endPoint: .trailing))
.clipShape(Capsule())
.shadow(color: Color("ColorShadow"), radius: 6, x: 0, y: 3)
}
.offset(y: moveUpward ? 210 : 300)
}
.frame(width: 335, height: 545)
.background(LinearGradient(gradient: Gradient(colors: card.gradientColors), startPoint: .top, endPoint: .bottom))
.cornerRadius(16)
.shadow(radius: 8)
.onAppear() {
withAnimation(.linear(duration: 1.2)) {
self.fadeIn.toggle()
}
withAnimation(.linear(duration: 0.8)) {
self.moveDownward.toggle()
self.moveUpward.toggle()
}
}
.alert(isPresented: $showAlert){
Alert(title: Text(card.title),
message: Text(card.message),
dismissButton: .default(Text("OK"))
)
}
}
}
// MARK: - Preview
struct CardView_Previews: PreviewProvider {
static var previews: some View {
CardView(card: cardData[5])
.previewLayout(.sizeThatFits)
}
}

@ -0,0 +1,33 @@
//
// ContentView.swift
// FirstApp
//
// Created by on 2021/1/29.
//
import SwiftUI
struct ContentView: View {
// MARK: - Properties
let cards: [Card] = cardData
// MARK: - Body
var body: some View {
ScrollView(.horizontal, showsIndicators: false) {
HStack(alignment: .center, spacing: 20) {
ForEach(cards) { item in
CardView(card: item)
}
}
.padding(20)
}
}
}
// MARK: - Preview
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
.previewDevice("iPhone 11")
}
}

@ -0,0 +1,17 @@
//
// FirstAppApp.swift
// FirstApp
//
// Created by on 2021/1/29.
//
import SwiftUI
@main
struct FirstAppApp: App {
var body: some Scene {
WindowGroup {
ContentView()
}
}
}

@ -0,0 +1,55 @@
<?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>
<true/>
</dict>
<key>UIApplicationSupportsIndirectInputEvents</key>
<true/>
<key>UILaunchScreen</key>
<dict>
<key>UIColorName</key>
<string>launch-screen-color</string>
<key>UIImageName</key>
<string>launch-screen-image</string>
</dict>
<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>

@ -0,0 +1,23 @@
//
// PlaySound.swift
// FirstApp
//
// Created by on 2021/1/31.
//
import Foundation
import AVFoundation
// MARK: -
var audioPlayer: AVAudioPlayer?
func playSound(sound: String, type: String) {
if let path = Bundle.main.path(forResource: sound, ofType: type) {
do {
audioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path))
audioPlayer?.play()
} catch {
print("不能播放指定的音效文件。")
}
}
}

@ -0,0 +1,31 @@
<?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>First App</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>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
<string>com.apple.message-payload-provider</string>
<key>NSExtensionPrincipalClass</key>
<string>StickerBrowserViewController</string>
</dict>
</dict>
</plist>

@ -0,0 +1,32 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"grid-size" : "regular"
},
"stickers" : [
{
"filename" : "sticker-developer01.sticker"
},
{
"filename" : "sticker-developer02.sticker"
},
{
"filename" : "sticker-developer03.sticker"
},
{
"filename" : "sticker-developer04.sticker"
},
{
"filename" : "sticker-developer05.sticker"
},
{
"filename" : "sticker-developer06.sticker"
},
{
"filename" : "sticker-developer07.sticker"
}
]
}

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"filename" : "sticker-developer01.png"
}
}

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"filename" : "sticker-developer02.png"
}
}

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"filename" : "sticker-developer03.png"
}
}

@ -0,0 +1,9 @@
{
"info" : {
"author" : "xcode",
"version" : 1
},
"properties" : {
"filename" : "sticker-developer04.png"
}
}

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

Loading…
Cancel
Save