Commit 1d2ad718 authored by CZ1004's avatar CZ1004

修改详情页面

parent 4608b52c
......@@ -2,7 +2,7 @@
// IntentHandler.swift
// ChargeShow
//
// Created by edy on 2025/4/7.
// Created by edy on 2025/4/10.
//
import Intents
......@@ -21,7 +21,7 @@ class IntentHandler: INExtension, INSendMessageIntentHandling, INSearchForMessag
override func handler(for intent: INIntent) -> Any {
// This is the default implementation. If you want different objects to handle different intents,
// you can override this and return the handler you want for that particular intent.
print("有反应么")
return self
}
......
......@@ -7,7 +7,7 @@
<key>INIntentDefinitionModelVersion</key>
<string>1.2</string>
<key>INIntentDefinitionNamespace</key>
<string>hAB6zR</string>
<string>3lzBiO</string>
<key>INIntentDefinitionSystemVersion</key>
<string>24D81</string>
<key>INIntentDefinitionToolsBuildVersion</key>
......@@ -21,10 +21,8 @@
<string>generic</string>
<key>INIntentConfigurable</key>
<true/>
<key>INIntentDescription</key>
<string>充电壁纸</string>
<key>INIntentDescriptionID</key>
<string>wDHi0A</string>
<string>7KMVSC</string>
<key>INIntentManagedParameterCombinations</key>
<dict>
<key></key>
......@@ -64,9 +62,9 @@
</array>
</dict>
<key>INIntentTitle</key>
<string>Charge Show</string>
<string>Run charging animation</string>
<key>INIntentTitleID</key>
<string>wwbZJW</string>
<string>QeNY2I</string>
<key>INIntentType</key>
<string>Custom</string>
<key>INIntentVerb</key>
......
......@@ -10,23 +10,27 @@
0496DEF32D9E3F58005B2834 /* WidgetKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BD915D2D9D68AD00055CEB /* WidgetKit.framework */; };
0496DEF42D9E3F58005B2834 /* SwiftUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BD915F2D9D68AD00055CEB /* SwiftUI.framework */; };
0496DEFF2D9E3F59005B2834 /* widgetExtension.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 0496DEF22D9E3F57005B2834 /* widgetExtension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
04CF31702DA7E78F001C87CA /* Intents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04BD7A442DA3BA1700A24C4B /* Intents.framework */; };
04CF31772DA7E790001C87CA /* ChargeShow.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 04CF316F2DA7E78F001C87CA /* ChargeShow.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; };
04CF317D2DA7E7BE001C87CA /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 04CF317C2DA7E7BE001C87CA /* Intents.intentdefinition */; };
04CF317E2DA7E7BE001C87CA /* Intents.intentdefinition in Sources */ = {isa = PBXBuildFile; fileRef = 04CF317C2DA7E7BE001C87CA /* Intents.intentdefinition */; };
3A00E856852A8783E544CD7D /* Pods_PhoneManager.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 6028F60B696E2F97EAA2325C /* Pods_PhoneManager.framework */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
0493223D2DA5314500E037A5 /* PBXContainerItemProxy */ = {
0496DEFD2D9E3F59005B2834 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = EB388E532D8A61A800629B0D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 041E01052DA3E865000F6C81;
remoteInfo = ChargeShow;
remoteGlobalIDString = 0496DEF12D9E3F57005B2834;
remoteInfo = widgetExtension;
};
0496DEFD2D9E3F59005B2834 /* PBXContainerItemProxy */ = {
04CF31752DA7E78F001C87CA /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = EB388E532D8A61A800629B0D /* Project object */;
proxyType = 1;
remoteGlobalIDString = 0496DEF12D9E3F57005B2834;
remoteInfo = widgetExtension;
remoteGlobalIDString = 04CF316E2DA7E78F001C87CA;
remoteInfo = ChargeShow;
};
/* End PBXContainerItemProxy section */
......@@ -48,6 +52,7 @@
dstSubfolderSpec = 13;
files = (
0496DEFF2D9E3F59005B2834 /* widgetExtension.appex in Embed Foundation Extensions */,
04CF31772DA7E790001C87CA /* ChargeShow.appex in Embed Foundation Extensions */,
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
......@@ -55,14 +60,14 @@
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */
041E01062DA3E865000F6C81 /* ChargeShow.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ChargeShow.appex; sourceTree = BUILT_PRODUCTS_DIR; };
041E01132DA3E896000F6C81 /* Intents.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = "<group>"; };
0496DEF22D9E3F57005B2834 /* widgetExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = widgetExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
0496DF042D9E3FA7005B2834 /* widgetExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = widgetExtension.entitlements; sourceTree = "<group>"; };
04BD7A442DA3BA1700A24C4B /* Intents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Intents.framework; path = System/Library/Frameworks/Intents.framework; sourceTree = SDKROOT; };
04BD7A4F2DA3BA1700A24C4B /* IntentsUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IntentsUI.framework; path = System/Library/Frameworks/IntentsUI.framework; sourceTree = SDKROOT; };
04BD915D2D9D68AD00055CEB /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
04BD915F2D9D68AD00055CEB /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
04CF316F2DA7E78F001C87CA /* ChargeShow.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = ChargeShow.appex; sourceTree = BUILT_PRODUCTS_DIR; };
04CF317C2DA7E7BE001C87CA /* Intents.intentdefinition */ = {isa = PBXFileReference; lastKnownFileType = file.intentdefinition; path = Intents.intentdefinition; sourceTree = "<group>"; };
295785B9009F20AC4C1C36C4 /* Pods-PhoneManager.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PhoneManager.debug.xcconfig"; path = "Target Support Files/Pods-PhoneManager/Pods-PhoneManager.debug.xcconfig"; sourceTree = "<group>"; };
6028F60B696E2F97EAA2325C /* Pods_PhoneManager.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_PhoneManager.framework; sourceTree = BUILT_PRODUCTS_DIR; };
8937DC9D81CEDE823C329A80 /* Pods-PhoneManager.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-PhoneManager.release.xcconfig"; path = "Target Support Files/Pods-PhoneManager/Pods-PhoneManager.release.xcconfig"; sourceTree = "<group>"; };
......@@ -70,19 +75,19 @@
/* End PBXFileReference section */
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
0493223E2DA531CC00E037A5 /* Exceptions for "ChargeShow" folder in "ChargeShow" target */ = {
0496DF032D9E3F59005B2834 /* Exceptions for "widget" folder in "widgetExtension" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 041E01052DA3E865000F6C81 /* ChargeShow */;
target = 0496DEF12D9E3F57005B2834 /* widgetExtension */;
};
0496DF032D9E3F59005B2834 /* Exceptions for "widget" folder in "widgetExtension" target */ = {
04CF317B2DA7E790001C87CA /* Exceptions for "ChargeShow" folder in "ChargeShow" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
membershipExceptions = (
Info.plist,
);
target = 0496DEF12D9E3F57005B2834 /* widgetExtension */;
target = 04CF316E2DA7E78F001C87CA /* ChargeShow */;
};
EB388E6D2D8A61AA00629B0D /* Exceptions for "PhoneManager" folder in "PhoneManager" target */ = {
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
......@@ -94,20 +99,20 @@
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
/* Begin PBXFileSystemSynchronizedRootGroup section */
041E01082DA3E865000F6C81 /* ChargeShow */ = {
0496DEF52D9E3F58005B2834 /* widget */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
0493223E2DA531CC00E037A5 /* Exceptions for "ChargeShow" folder in "ChargeShow" target */,
0496DF032D9E3F59005B2834 /* Exceptions for "widget" folder in "widgetExtension" target */,
);
path = ChargeShow;
path = widget;
sourceTree = "<group>";
};
0496DEF52D9E3F58005B2834 /* widget */ = {
04CF31712DA7E78F001C87CA /* ChargeShow */ = {
isa = PBXFileSystemSynchronizedRootGroup;
exceptions = (
0496DF032D9E3F59005B2834 /* Exceptions for "widget" folder in "widgetExtension" target */,
04CF317B2DA7E790001C87CA /* Exceptions for "ChargeShow" folder in "ChargeShow" target */,
);
path = widget;
path = ChargeShow;
sourceTree = "<group>";
};
EB388E5D2D8A61A800629B0D /* PhoneManager */ = {
......@@ -121,19 +126,20 @@
/* End PBXFileSystemSynchronizedRootGroup section */
/* Begin PBXFrameworksBuildPhase section */
041E01032DA3E865000F6C81 /* Frameworks */ = {
0496DEEF2D9E3F57005B2834 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
0496DEF42D9E3F58005B2834 /* SwiftUI.framework in Frameworks */,
0496DEF32D9E3F58005B2834 /* WidgetKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
0496DEEF2D9E3F57005B2834 /* Frameworks */ = {
04CF316C2DA7E78F001C87CA /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
0496DEF42D9E3F58005B2834 /* SwiftUI.framework in Frameworks */,
0496DEF32D9E3F58005B2834 /* WidgetKit.framework in Frameworks */,
04CF31702DA7E78F001C87CA /* Intents.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -172,11 +178,11 @@
EB388E522D8A61A800629B0D = {
isa = PBXGroup;
children = (
041E01132DA3E896000F6C81 /* Intents.intentdefinition */,
04CF317C2DA7E7BE001C87CA /* Intents.intentdefinition */,
0496DF042D9E3FA7005B2834 /* widgetExtension.entitlements */,
EB388E5D2D8A61A800629B0D /* PhoneManager */,
0496DEF52D9E3F58005B2834 /* widget */,
041E01082DA3E865000F6C81 /* ChargeShow */,
04CF31712DA7E78F001C87CA /* ChargeShow */,
EB388E5C2D8A61A800629B0D /* Products */,
CB2ACD1E9442B4500087E831 /* Pods */,
27ECDADD9059AB5043B8E1E9 /* Frameworks */,
......@@ -188,7 +194,7 @@
children = (
EB388E5B2D8A61A800629B0D /* PhoneManager.app */,
0496DEF22D9E3F57005B2834 /* widgetExtension.appex */,
041E01062DA3E865000F6C81 /* ChargeShow.appex */,
04CF316F2DA7E78F001C87CA /* ChargeShow.appex */,
);
name = Products;
sourceTree = "<group>";
......@@ -196,44 +202,46 @@
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
041E01052DA3E865000F6C81 /* ChargeShow */ = {
0496DEF12D9E3F57005B2834 /* widgetExtension */ = {
isa = PBXNativeTarget;
buildConfigurationList = 041E010F2DA3E865000F6C81 /* Build configuration list for PBXNativeTarget "ChargeShow" */;
buildConfigurationList = 0496DF022D9E3F59005B2834 /* Build configuration list for PBXNativeTarget "widgetExtension" */;
buildPhases = (
041E01022DA3E865000F6C81 /* Sources */,
041E01032DA3E865000F6C81 /* Frameworks */,
041E01042DA3E865000F6C81 /* Resources */,
0496DEEE2D9E3F57005B2834 /* Sources */,
0496DEEF2D9E3F57005B2834 /* Frameworks */,
0496DEF02D9E3F57005B2834 /* Resources */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
041E01082DA3E865000F6C81 /* ChargeShow */,
0496DEF52D9E3F58005B2834 /* widget */,
);
name = ChargeShow;
productName = ChargeShow;
productReference = 041E01062DA3E865000F6C81 /* ChargeShow.appex */;
name = widgetExtension;
productName = widgetExtension;
productReference = 0496DEF22D9E3F57005B2834 /* widgetExtension.appex */;
productType = "com.apple.product-type.app-extension";
};
0496DEF12D9E3F57005B2834 /* widgetExtension */ = {
04CF316E2DA7E78F001C87CA /* ChargeShow */ = {
isa = PBXNativeTarget;
buildConfigurationList = 0496DF022D9E3F59005B2834 /* Build configuration list for PBXNativeTarget "widgetExtension" */;
buildConfigurationList = 04CF31782DA7E790001C87CA /* Build configuration list for PBXNativeTarget "ChargeShow" */;
buildPhases = (
0496DEEE2D9E3F57005B2834 /* Sources */,
0496DEEF2D9E3F57005B2834 /* Frameworks */,
0496DEF02D9E3F57005B2834 /* Resources */,
04CF316B2DA7E78F001C87CA /* Sources */,
04CF316C2DA7E78F001C87CA /* Frameworks */,
04CF316D2DA7E78F001C87CA /* Resources */,
);
buildRules = (
);
dependencies = (
);
fileSystemSynchronizedGroups = (
0496DEF52D9E3F58005B2834 /* widget */,
04CF31712DA7E78F001C87CA /* ChargeShow */,
);
name = widgetExtension;
productName = widgetExtension;
productReference = 0496DEF22D9E3F57005B2834 /* widgetExtension.appex */;
name = ChargeShow;
packageProductDependencies = (
);
productName = ChargeShow;
productReference = 04CF316F2DA7E78F001C87CA /* ChargeShow.appex */;
productType = "com.apple.product-type.app-extension";
};
EB388E5A2D8A61A800629B0D /* PhoneManager */ = {
......@@ -252,7 +260,7 @@
);
dependencies = (
0496DEFE2D9E3F59005B2834 /* PBXTargetDependency */,
041E010D2DA3E865000F6C81 /* PBXTargetDependency */,
04CF31762DA7E78F001C87CA /* PBXTargetDependency */,
);
fileSystemSynchronizedGroups = (
EB388E5D2D8A61A800629B0D /* PhoneManager */,
......@@ -272,10 +280,10 @@
LastSwiftUpdateCheck = 1620;
LastUpgradeCheck = 1620;
TargetAttributes = {
041E01052DA3E865000F6C81 = {
0496DEF12D9E3F57005B2834 = {
CreatedOnToolsVersion = 16.2;
};
0496DEF12D9E3F57005B2834 = {
04CF316E2DA7E78F001C87CA = {
CreatedOnToolsVersion = 16.2;
};
EB388E5A2D8A61A800629B0D = {
......@@ -300,20 +308,20 @@
targets = (
EB388E5A2D8A61A800629B0D /* PhoneManager */,
0496DEF12D9E3F57005B2834 /* widgetExtension */,
041E01052DA3E865000F6C81 /* ChargeShow */,
04CF316E2DA7E78F001C87CA /* ChargeShow */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
041E01042DA3E865000F6C81 /* Resources */ = {
0496DEF02D9E3F57005B2834 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0496DEF02D9E3F57005B2834 /* Resources */ = {
04CF316D2DA7E78F001C87CA /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
......@@ -372,17 +380,18 @@
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
041E01022DA3E865000F6C81 /* Sources */ = {
0496DEEE2D9E3F57005B2834 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
0496DEEE2D9E3F57005B2834 /* Sources */ = {
04CF316B2DA7E78F001C87CA /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
04CF317D2DA7E7BE001C87CA /* Intents.intentdefinition in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
......@@ -390,28 +399,32 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
04CF317E2DA7E7BE001C87CA /* Intents.intentdefinition in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
041E010D2DA3E865000F6C81 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 041E01052DA3E865000F6C81 /* ChargeShow */;
targetProxy = 0493223D2DA5314500E037A5 /* PBXContainerItemProxy */;
};
0496DEFE2D9E3F59005B2834 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 0496DEF12D9E3F57005B2834 /* widgetExtension */;
targetProxy = 0496DEFD2D9E3F59005B2834 /* PBXContainerItemProxy */;
};
04CF31762DA7E78F001C87CA /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 04CF316E2DA7E78F001C87CA /* ChargeShow */;
targetProxy = 04CF31752DA7E78F001C87CA /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin XCBuildConfiguration section */
041E01102DA3E865000F6C81 /* Debug */ = {
0496DF002D9E3F59005B2834 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = widgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
......@@ -422,17 +435,19 @@
"$(inherited)",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ChargeShow/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ChargeShow;
INFOPLIST_FILE = widget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = widget;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.ChargeShow;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.bswidget;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
......@@ -440,27 +455,31 @@
};
name = Debug;
};
041E01112DA3E865000F6C81 /* Release */ = {
0496DF012D9E3F59005B2834 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = widgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6K23946NQ5;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = ChargeShow/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ChargeShow;
INFOPLIST_FILE = widget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = widget;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.ChargeShow;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.bswidget;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
......@@ -468,12 +487,9 @@
};
name = Release;
};
0496DF002D9E3F59005B2834 /* Debug */ = {
04CF31792DA7E790001C87CA /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = widgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
......@@ -484,19 +500,17 @@
"$(inherited)",
);
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = widget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = widget;
INFOPLIST_FILE = ChargeShow/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ChargeShow;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.bswidget;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.ChargeShow;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
......@@ -504,31 +518,26 @@
};
name = Debug;
};
0496DF012D9E3F59005B2834 /* Release */ = {
04CF317A2DA7E790001C87CA /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = widgetExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 6K23946NQ5;
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GENERATE_INFOPLIST_FILE = YES;
INFOPLIST_FILE = widget/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = widget;
INFOPLIST_FILE = ChargeShow/Info.plist;
INFOPLIST_KEY_CFBundleDisplayName = ChargeShow;
INFOPLIST_KEY_NSHumanReadableCopyright = "";
IPHONEOS_DEPLOYMENT_TARGET = 14.0;
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 1.0;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.bswidget;
PRODUCT_BUNDLE_IDENTIFIER = com.app.phonemanager.ChargeShow;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "";
SKIP_INSTALL = YES;
SWIFT_EMIT_LOC_STRINGS = YES;
SWIFT_VERSION = 5.0;
......@@ -553,7 +562,8 @@
INFOPLIST_KEY_NSCameraUsageDescription = "We need camera access to access image storage information";
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "We need to access the network to load content";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "We need microphone permission to record videos";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "We need album permission to access image storage information";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
......@@ -593,7 +603,8 @@
INFOPLIST_KEY_NSCameraUsageDescription = "We need camera access to access image storage information";
INFOPLIST_KEY_NSLocalNetworkUsageDescription = "We need to access the network to load content";
INFOPLIST_KEY_NSMicrophoneUsageDescription = "We need microphone permission to record videos";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "We need album permission to access image storage information";
INFOPLIST_KEY_NSPhotoLibraryAddUsageDescription = "";
INFOPLIST_KEY_NSPhotoLibraryUsageDescription = "";
INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES;
INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen;
INFOPLIST_KEY_UIMainStoryboardFile = Main;
......@@ -739,20 +750,20 @@
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
041E010F2DA3E865000F6C81 /* Build configuration list for PBXNativeTarget "ChargeShow" */ = {
0496DF022D9E3F59005B2834 /* Build configuration list for PBXNativeTarget "widgetExtension" */ = {
isa = XCConfigurationList;
buildConfigurations = (
041E01102DA3E865000F6C81 /* Debug */,
041E01112DA3E865000F6C81 /* Release */,
0496DF002D9E3F59005B2834 /* Debug */,
0496DF012D9E3F59005B2834 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
0496DF022D9E3F59005B2834 /* Build configuration list for PBXNativeTarget "widgetExtension" */ = {
04CF31782DA7E790001C87CA /* Build configuration list for PBXNativeTarget "ChargeShow" */ = {
isa = XCConfigurationList;
buildConfigurations = (
0496DF002D9E3F59005B2834 /* Debug */,
0496DF012D9E3F59005B2834 /* Release */,
04CF31792DA7E790001C87CA /* Debug */,
04CF317A2DA7E790001C87CA /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
......
......@@ -15,6 +15,8 @@ class HomePhotosDetailViewController : BaseViewController {
private var currentHeaderView: HomePhotosDetailCustomHeaderView?
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
......@@ -50,7 +52,11 @@ class HomePhotosDetailViewController : BaseViewController {
// 当前页面选中的
var selectedModel : [String] = [] {
didSet{
if self.selectedModel.count == 1{
self.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal)
}else{
self.deleteButton.setTitle("Delete \(selectedModel.count) Videos", for: .normal)
}
}
}
......@@ -76,9 +82,20 @@ class HomePhotosDetailViewController : BaseViewController {
}()
lazy var emptyTrashView : EmptyTrashView = {
let view = EmptyTrashView()
view.backgroundColor = .white
// lazy var emptyTrashView : EmptyTrashView = {
// let view = EmptyTrashView()
// view.backgroundColor = .white
// return view
// }()
lazy var deleteButton : UIButton = {
let view = UIButton()
view.setTitle("Delete", for: UIControl.State.normal)
view.setTitleColor(.white, for: .normal)
view.clipsToBounds = true
view.layer.cornerRadius = 23
view.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
view.addTarget(self, action: #selector(deleteButtonAction), for: .touchUpInside)
return view
}()
......@@ -89,18 +106,50 @@ class HomePhotosDetailViewController : BaseViewController {
videoDetailNavView = VideoDetaiNavView(frame: CGRect(x: 0, y: 0, width: self.view.width, height: statusBarHeight + 44))
self.view.addSubview(videoDetailNavView!)
videoDetailNavView?.snp.makeConstraints({ make in
make.top.centerX.width.equalToSuperview()
make.height.equalTo(statusBarHeight + 44)
})
self.view.addSubview(self.emptyTrashView)
self.emptyTrashView.snp.makeConstraints { make in
make.left.right.equalToSuperview()
make.bottom.equalToSuperview().offset(-34)
make.height.equalTo(70)
self.videoDetailNavView?.selectAllCallBack = {[weak self] choose in
guard let self else {return}
if choose == true {
self.selectedModel = self.resourceData
}else{
self.selectedModel.removeAll()
}
DispatchQueue.main.async {
self.collectionView.reloadData()
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
}
// self.view.addSubview(self.emptyTrashView)
// self.emptyTrashView.snp.makeConstraints { make in
// make.left.right.equalToSuperview()
// make.bottom.equalToSuperview().offset(-34)
// make.height.equalTo(70)
// }
self.view.insertSubview(collectionView, at: 0)
self.view.addSubview(self.deleteButton)
self.deleteButton.snp.makeConstraints { make in
make.top.equalTo(self.collectionView.snp.bottom).offset(16)
make.left.equalToSuperview().offset(15)
make.right.equalToSuperview().offset(-15)
make.height.equalTo(46)
}
}
override func viewDidLoad() {
......@@ -142,6 +191,13 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
cell.resourceIdent = self.resourceData[indexPath.row]
cell.currentOrder = indexPath.row
if self.selectedModel.contains(cell.resourceIdent) {
cell.choose = true
}else{
cell.choose = false
}
cell.cellCallBack = {[weak self] ident,order in
guard let self else {return}
DispatchQueue.main.async {
......@@ -152,6 +208,22 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
self.navigationController?.pushViewController(vc, animated: true)
}
}
cell.clickCallBack = {[weak self] click,order in
guard let self else {return}
if click == true {
self.selectedModel.append(self.resourceData[order])
}else{
self.selectedModel.removeAll { $0 == self.resourceData[order] }
}
DispatchQueue.main.async {
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
}
return cell
}
......@@ -220,8 +292,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
return footer
}
}
func sortByType(sortType:Int){
let viewModel = CompressViewModel()
......@@ -313,11 +383,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
}
......@@ -346,8 +411,6 @@ extension HomePhotosDetailViewController:WaterfallMutiSectionDelegate,UICollecti
}
}
}
......
......@@ -10,10 +10,12 @@ import Photos
class HomeVideoDetailController :BaseViewController {
private var headerHeight : CGFloat = 168
private var headerHeight : CGFloat = 98
private var currentHeaderView: HomeVideoDetailCustomHeaderView?
var datas : [ResourceModel] = []
@MainActor required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
......@@ -49,13 +51,13 @@ class HomeVideoDetailController :BaseViewController {
didSet{
DispatchQueue.main.async { [self] in
if self.selectedModel.count == 0 {
self.deleteButton.isHidden = true
self.headerHeight = 168
self.currentHeaderView?.tipBackView.isHidden = false
// self.deleteButton.isHidden = true
// self.headerHeight = 168
// self.currentHeaderView?.tipBackView.isHidden = false
}else{
self.headerHeight = 90
self.currentHeaderView?.tipBackView.isHidden = true
self.deleteButton.isHidden = false
// self.headerHeight = 90
// self.currentHeaderView?.tipBackView.isHidden = true
// self.deleteButton.isHidden = false
if self.selectedModel.count == 1{
self.deleteButton.setTitle("Delete \(self.selectedModel.count) Video", for: .normal)
}else{
......@@ -95,7 +97,7 @@ class HomeVideoDetailController :BaseViewController {
view.setTitleColor(.white, for: .normal)
view.clipsToBounds = true
view.layer.cornerRadius = 23
view.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
view.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
view.addTarget(self, action: #selector(deleteButtonAction), for: .touchUpInside)
return view
}()
......@@ -109,6 +111,26 @@ class HomeVideoDetailController :BaseViewController {
make.top.centerX.width.equalToSuperview()
make.height.equalTo(statusBarHeight + 44)
})
self.videoDetailNavView?.selectAllCallBack = {[weak self] choose in
guard let self else {return}
if choose == true {
self.selectedModel = self.resourceData
}else{
self.selectedModel.removeAll()
}
DispatchQueue.main.async {
self.collectionView.reloadData()
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
}
self.view.insertSubview(collectionView, at: 0)
......@@ -121,9 +143,6 @@ class HomeVideoDetailController :BaseViewController {
make.height.equalTo(46)
}
// 删除按钮默认隐藏,有选中的时候才出来
self.deleteButton.isHidden = true
}
override func viewDidLoad() {
......@@ -162,6 +181,11 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
cell.resourceIdent = self.resourceData[indexPath.row]
cell.currentOrder = indexPath.row
if self.selectedModel.contains(cell.resourceIdent) {
cell.choose = true
}else{
cell.choose = false
}
cell.clickCallBack = {[weak self] click,order in
guard let self else {return}
......@@ -170,6 +194,15 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}else{
self.selectedModel.removeAll { $0 == self.resourceData[order] }
}
DispatchQueue.main.async {
if self.selectedModel.count > 0 {
self.deleteButton.backgroundColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
}else{
self.deleteButton.backgroundColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
self.deleteButton.setTitle("Delete", for: .normal)
}
}
}
cell.cellCallBack = {[weak self] ident,order in
guard let self else {return}
......@@ -218,6 +251,20 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
let header = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "HomeVideoDetailCustomHeaderView", for: indexPath) as! HomeVideoDetailCustomHeaderView
// 记录当前的 headerView
currentHeaderView = header
header.sortCallback = {[weak self] in
guard let self else {return}
let sortView = CompressSortView(frame: self.view.bounds)
// 这两行是为了进入页面的时候选中
sortView.currentIndex = self.currentSort
sortView.tableView.reloadData()
self.view.addSubview(sortView)
sortView.callBack = {[weak self] sortType in
guard let self else {return}
self.currentSort = sortType as! Int
self.sortByType(sortType: self.currentSort)
}
}
return header
}else{
let footer = collectionView.dequeueReusableSupplementaryView(
......@@ -294,5 +341,99 @@ extension HomeVideoDetailController:WaterfallMutiSectionDelegate,UICollectionVie
}
func sortByType(sortType:Int){
let viewModel = CompressViewModel()
if self.datas.count > 0 {
switch sortType {
case 0:
self.currentHeaderView!.selectlabel.text = "Largest"
// 按照文件大小降序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 1, sortKind: 0)
break
case 1:
self.currentHeaderView!.selectlabel.text = "Smallest"
// 按照文件大小升序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 0, sortKind: 0)
break
case 2:
self.currentHeaderView!.selectlabel.text = "Newest"
// 按照时间降序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 1, sortKind: 1)
break
case 3:
self.currentHeaderView!.selectlabel.text = "Oldest"
// 按照时间升序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 0, sortKind: 1)
break
default:
break
}
var finalData : [String] = []
for item in self.datas {
finalData.append(item.ident)
}
self.resourceData = finalData
self.collectionView.reloadData()
}else{
DispatchQueue.global().async {
let fetchResult = PHAsset.fetchAssets(withLocalIdentifiers: self.resourceData, options: nil)
let assetsArray = fetchResult.objects(at: IndexSet(0..<fetchResult.count))
let options = PHImageRequestOptions()
options.isSynchronous = false
options.deliveryMode = .highQualityFormat
options.isNetworkAccessAllowed = true
var count = 0
for item in assetsArray {
PHImageManager.default().requestImageDataAndOrientation(for: item, options: options) { (imageData, _, _, error) in
guard let originalData = imageData else {
return
}
let model = ResourceModel(ident: item.localIdentifier, orgSize: Double(originalData.count), createDate: item.creationDate!)
self.datas.append(model)
}
count = count + 1
// 表示结束了
if count == assetsArray.count {
DispatchQueue.main.async {
switch sortType {
case 0:
self.currentHeaderView!.selectlabel.text = "Largest"
// 按照文件大小降序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 1, sortKind: 0)
break
case 1:
self.currentHeaderView!.selectlabel.text = "Smallest"
// 按照文件大小升序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 0, sortKind: 0)
break
case 2:
self.currentHeaderView!.selectlabel.text = "Newest"
// 按照时间降序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 1, sortKind: 1)
break
case 3:
self.currentHeaderView!.selectlabel.text = "Oldest"
// 按照时间升序
self.datas = viewModel.sortRsource(resource: self.datas, sortType: 0, sortKind: 1)
break
default:
break
}
var finalData : [String] = []
for item in self.datas {
finalData.append(item.ident)
}
self.resourceData = finalData
self.collectionView.reloadData()
}
}
}
}
}
}
}
......@@ -7,6 +7,9 @@
import Foundation
class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
var sortCallback : ()->Void = {}
lazy var modelTitlelabel :UILabel = {
let label = UILabel()
label.text = "Videos"
......@@ -21,6 +24,13 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 16
view.clipsToBounds = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(sortAction))
view.isUserInteractionEnabled = true
view.addGestureRecognizer(tap)
return view
}()
......@@ -46,52 +56,52 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
return label
}()
lazy var tipBackView :UIView = {
let view = UIView()
view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
view.layer.cornerRadius = 8
view.clipsToBounds = true
return view
}()
lazy var tipImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_cmpress_home_nor")
return view
}()
lazy var tipLabel :UILabel = {
let label = UILabel()
label.text = "Video Compress"
label.textAlignment = .left
label.numberOfLines = 0
label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
return label
}()
lazy var tipDetailLabel :UILabel = {
let label = UILabel()
label.text = "Tap to start the process"
label.textAlignment = .left
label.numberOfLines = 0
label.textColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
label.font = UIFont.systemFont(ofSize: 12, weight: .regular)
return label
}()
lazy var saveSizeLabel :UILabel = {
let label = UILabel()
label.text = "13.5M"
label.textAlignment = .right
label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
return label
}()
lazy var moreImageView :UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "icon_left_setting_grey")
return view
}()
// lazy var tipBackView :UIView = {
// let view = UIView()
// view.backgroundColor = UIColor(red: 0.95, green: 0.96, blue: 0.99, alpha: 1)
// view.layer.cornerRadius = 8
// view.clipsToBounds = true
// return view
// }()
// lazy var tipImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "ic_cmpress_home_nor")
// return view
// }()
//
// lazy var tipLabel :UILabel = {
// let label = UILabel()
// label.text = "Video Compress"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var tipDetailLabel :UILabel = {
// let label = UILabel()
// label.text = "Tap to start the process"
// label.textAlignment = .left
// label.numberOfLines = 0
// label.textColor = UIColor(red: 0.7, green: 0.7, blue: 0.7, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 12, weight: .regular)
// return label
// }()
//
// lazy var saveSizeLabel :UILabel = {
// let label = UILabel()
// label.text = "13.5M"
// label.textAlignment = .right
// label.textColor = UIColor(red: 0, green: 0.51, blue: 1, alpha: 1)
// label.font = UIFont.systemFont(ofSize: 16, weight: .bold)
// return label
// }()
//
// lazy var moreImageView :UIImageView = {
// let view = UIImageView()
// view.image = UIImage(named: "icon_left_setting_grey")
// return view
// }()
......@@ -105,12 +115,12 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
self.btnView.addSubview(self.selectImageView)
self.btnView.addSubview(self.selectlabel)
self.addSubview(self.tipBackView)
self.tipBackView.addSubview(self.tipImageView)
self.tipBackView.addSubview(self.tipLabel)
self.tipBackView.addSubview(self.tipDetailLabel)
self.tipBackView.addSubview(self.saveSizeLabel)
self.tipBackView.addSubview(self.moreImageView)
// self.addSubview(self.tipBackView)
// self.tipBackView.addSubview(self.tipImageView)
// self.tipBackView.addSubview(self.tipLabel)
// self.tipBackView.addSubview(self.tipDetailLabel)
// self.tipBackView.addSubview(self.saveSizeLabel)
// self.tipBackView.addSubview(self.moreImageView)
......@@ -146,44 +156,44 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
make.height.equalTo(20)
}
self.tipBackView.snp.makeConstraints { make in
make.left.equalTo(0)
make.right.equalTo(0)
make.top.equalTo(self.sizeLabel.snp.bottom).offset(12)
make.height.equalTo(70)
}
self.tipImageView.snp.makeConstraints { make in
make.left.equalToSuperview().offset(15)
make.centerY.equalToSuperview()
make.width.height.equalTo(30)
}
self.tipLabel.snp.makeConstraints { make in
make.left.equalTo(self.tipImageView.snp.right).offset(10)
make.width.equalTo(150 * RScreenW())
make.height.equalTo(22)
make.top.equalToSuperview().offset(15)
}
self.tipDetailLabel.snp.makeConstraints { make in
make.left.equalTo(self.tipImageView.snp.right).offset(10)
make.width.equalTo(150 * RScreenW())
make.height.equalTo(18)
make.top.equalTo(self.tipLabel.snp.bottom).offset(0)
}
self.moreImageView.snp.makeConstraints { make in
make.height.width.equalTo(20)
make.right.equalToSuperview().offset(-15)
make.centerY.equalToSuperview()
}
self.saveSizeLabel.snp.makeConstraints { make in
make.centerY.equalToSuperview()
make.right.equalTo(self.moreImageView.snp.left).offset(-10)
make.height.equalTo(28)
make.width.equalTo(100)
}
// self.tipBackView.snp.makeConstraints { make in
// make.left.equalTo(0)
// make.right.equalTo(0)
// make.top.equalTo(self.sizeLabel.snp.bottom).offset(12)
// make.height.equalTo(70)
// }
//
// self.tipImageView.snp.makeConstraints { make in
// make.left.equalToSuperview().offset(15)
// make.centerY.equalToSuperview()
// make.width.height.equalTo(30)
//
// }
// self.tipLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(22)
// make.top.equalToSuperview().offset(15)
// }
// self.tipDetailLabel.snp.makeConstraints { make in
// make.left.equalTo(self.tipImageView.snp.right).offset(10)
// make.width.equalTo(150 * RScreenW())
// make.height.equalTo(18)
// make.top.equalTo(self.tipLabel.snp.bottom).offset(0)
// }
//
// self.moreImageView.snp.makeConstraints { make in
// make.height.width.equalTo(20)
// make.right.equalToSuperview().offset(-15)
// make.centerY.equalToSuperview()
// }
//
// self.saveSizeLabel.snp.makeConstraints { make in
// make.centerY.equalToSuperview()
// make.right.equalTo(self.moreImageView.snp.left).offset(-10)
// make.height.equalTo(28)
// make.width.equalTo(100)
// }
}
override init(frame: CGRect) {
......@@ -197,4 +207,8 @@ class HomeVideoDetailCustomHeaderView : UICollectionReusableView {
super.init(coder: aDecoder)
setUI()
}
@objc func sortAction(){
sortCallback()
}
}
......@@ -8,8 +8,28 @@
import Foundation
class VideoDetaiNavView : UIView {
var selectAllCallBack : (Bool)->Void = {choose in}
private var backButton:UIButton!
private var selectButton:UIButton!
lazy var seletedAllBtn:UIButton = {
let btn:UIButton = UIButton(frame: CGRect(x: 0, y: 0, width: 131, height: 32))
btn.isSelected = false
btn.backgroundColor = UIColor.colorWithHex(hexStr: "#F2F6FC")
btn.setImage(UIImage.init(named: "ic_check_similar"), for: .normal)
btn.setTitle("Select All", for: .normal)
btn.setImage(UIImage.init(named: "ic_close_similar"), for: .selected)
btn.setTitle("Deselect All", for: .selected)
btn.setTitleColor(UIColor.colorWithHex(hexStr: mColor), for: .normal)
btn.setTitleColor(UIColor.colorWithHex(hexStr: black3Color), for: .selected)
btn.titleLabel?.font = UIFont.systemFont(ofSize: 14, weight: .bold)
btn.changBtnWithStytl(btnStyle: .defalut, margin: 8)
btn.addTarget(self, action: #selector(seletedAllBtnClick), for: .touchUpInside)
return btn
}()
override init(frame: CGRect) {
......@@ -31,6 +51,13 @@ class VideoDetaiNavView : UIView {
backButton.addTarget(self, action: #selector(backBtnClick), for: .touchUpInside)
self.addSubview(backButton)
self.addSubview(self.seletedAllBtn)
self.seletedAllBtn.snp.makeConstraints { make in
make.right.equalToSuperview().offset(-15)
make.centerY.equalTo(self.backButton.snp.centerY)
}
backButton.snp.makeConstraints { make in
make.centerY.equalTo(navCenterY)
......@@ -38,26 +65,19 @@ class VideoDetaiNavView : UIView {
make.width.height.equalTo(iconWH)
}
selectButton = UIButton(frame: CGRect(x: 0, y: 0, width: 70, height: iconWH))
selectButton.setTitle("Select", for: .normal)
selectButton.addTarget(self, action: #selector(proBtnClick), for: .touchUpInside)
self.addSubview(selectButton)
selectButton.snp.makeConstraints { make in
make.centerY.equalTo(navCenterY)
make.right.equalToSuperview().offset(-15)
make.width.equalTo(70)
make.height.equalTo(iconWH)
}
}
@objc private func backBtnClick() {
self.responderViewController()?.navigationController?.popViewController(animated: true)
}
@objc private func proBtnClick() {
Print("点击了选择按钮")
@objc func seletedAllBtnClick() {
DispatchQueue.main.async {[weak self] in
guard let self else {return}
seletedAllBtn.isSelected = !seletedAllBtn.isSelected
self.selectAllCallBack(seletedAllBtn.isSelected)
}
}
}
......@@ -10,10 +10,23 @@ import Photos
class HomePhotosDetailCollectionCell : UICollectionViewCell {
var clickCallBack : (Bool,Int)->Void = {choose,order in}
var cellCallBack : (String,Int)->Void = {ident,order in}
var currentMediaType : Int = 0
var choose : Bool = false {
didSet{
if choose {
self.selectImageView.image = UIImage(named: "ic_unsel_com")
}else{
self.selectImageView.image = UIImage(named: "ic_sel_com")
}
}
}
var resourceIdent : String = "" {
didSet{
DispatchQueue.global().async {
......@@ -52,6 +65,21 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell {
return view
}()
lazy var selectImageView: UIImageView = {
let view = UIImageView()
view.image = UIImage(named: "ic_sel_com")
view.backgroundColor = .clear
view.isUserInteractionEnabled = true
let tap = UITapGestureRecognizer()
tap.addTarget(self, action: #selector(selectClick))
view.addGestureRecognizer(tap)
return view
}()
@objc func cellClick(){
cellCallBack(self.resourceIdent,self.currentOrder)
}
......@@ -67,10 +95,16 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell {
self.addGestureRecognizer(tap)
self.addSubview(self.backImageView)
self.addSubview(self.selectImageView)
self.backImageView.snp.makeConstraints { make in
make.left.right.height.width.equalToSuperview()
}
self.selectImageView.snp.makeConstraints { make in
make.bottom.right.equalToSuperview().offset(-12)
make.height.width.equalTo(24)
}
}
required init?(coder: NSCoder) {
......@@ -81,4 +115,9 @@ class HomePhotosDetailCollectionCell : UICollectionViewCell {
@objc func imageClick(){
}
@objc func selectClick(){
self.choose = !self.choose
clickCallBack(self.choose,self.currentOrder)
}
}
......@@ -2,10 +2,6 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSPhotoLibraryUsageDescription</key>
<string></string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string></string>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment