Commit 1d2ad718 authored by CZ1004's avatar CZ1004

修改详情页面

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