1.1.1发布

This commit is contained in:
zeng 2025-06-20 18:46:17 +08:00
parent 9adad48800
commit e5261c3fc8
4 changed files with 50 additions and 64 deletions

View File

@ -270,6 +270,19 @@
C3D1CE788CA03A1878493356 /* Pods_ThimraTV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B64805795B479324EB764157 /* Pods_ThimraTV.framework */; }; C3D1CE788CA03A1878493356 /* Pods_ThimraTV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B64805795B479324EB764157 /* Pods_ThimraTV.framework */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */
/* Begin PBXCopyFilesBuildPhase section */
1BB9206E2E050B1A00A2C715 /* Embed Foundation Extensions */ = {
isa = PBXCopyFilesBuildPhase;
buildActionMask = 2147483647;
dstPath = "";
dstSubfolderSpec = 13;
files = (
);
name = "Embed Foundation Extensions";
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXCopyFilesBuildPhase section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
0538826A0638D33FEF3A2E38 /* Pods-ThimraTV.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ThimraTV.debug.xcconfig"; path = "Target Support Files/Pods-ThimraTV/Pods-ThimraTV.debug.xcconfig"; sourceTree = "<group>"; }; 0538826A0638D33FEF3A2E38 /* Pods-ThimraTV.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-ThimraTV.debug.xcconfig"; path = "Target Support Files/Pods-ThimraTV/Pods-ThimraTV.debug.xcconfig"; sourceTree = "<group>"; };
109EB01BE447EE135493CA38 /* Pods-MoviaBox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoviaBox.release.xcconfig"; path = "Target Support Files/Pods-MoviaBox/Pods-MoviaBox.release.xcconfig"; sourceTree = "<group>"; }; 109EB01BE447EE135493CA38 /* Pods-MoviaBox.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-MoviaBox.release.xcconfig"; path = "Target Support Files/Pods-MoviaBox/Pods-MoviaBox.release.xcconfig"; sourceTree = "<group>"; };
@ -582,11 +595,11 @@
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
1BB91BBD2E04FD6A00A2C715 /* AppDelegate.swift */, 1BB91BBD2E04FD6A00A2C715 /* AppDelegate.swift */,
1BB91BC22E04FD6A00A2C715 /* SceneDelegate.swift */,
1BB91BBE2E04FD6A00A2C715 /* AppDelegate+APNS.swift */, 1BB91BBE2E04FD6A00A2C715 /* AppDelegate+APNS.swift */,
1BB91BBF2E04FD6A00A2C715 /* AppDelegate+Config.swift */, 1BB91BBF2E04FD6A00A2C715 /* AppDelegate+Config.swift */,
1BB91BC02E04FD6A00A2C715 /* AppDelegate+OpenApp.swift */, 1BB91BC02E04FD6A00A2C715 /* AppDelegate+OpenApp.swift */,
1BB91BC12E04FD6A00A2C715 /* AppDelegate+Thirdparty.swift */, 1BB91BC12E04FD6A00A2C715 /* AppDelegate+Thirdparty.swift */,
1BB91BC22E04FD6A00A2C715 /* SceneDelegate.swift */,
); );
path = AppDelegate; path = AppDelegate;
sourceTree = "<group>"; sourceTree = "<group>";
@ -1442,6 +1455,7 @@
1DBC40562DA4EDFC0093FCB0 /* Frameworks */, 1DBC40562DA4EDFC0093FCB0 /* Frameworks */,
1DBC40572DA4EDFC0093FCB0 /* Resources */, 1DBC40572DA4EDFC0093FCB0 /* Resources */,
4E1CBF3F1205E28DFCF11722 /* [CP] Embed Pods Frameworks */, 4E1CBF3F1205E28DFCF11722 /* [CP] Embed Pods Frameworks */,
1BB9206E2E050B1A00A2C715 /* Embed Foundation Extensions */,
); );
buildRules = ( buildRules = (
); );
@ -1459,7 +1473,7 @@
isa = PBXProject; isa = PBXProject;
attributes = { attributes = {
BuildIndependentTargetsInParallel = 1; BuildIndependentTargetsInParallel = 1;
LastSwiftUpdateCheck = 1620; LastSwiftUpdateCheck = 1640;
LastUpgradeCheck = 1620; LastUpgradeCheck = 1620;
TargetAttributes = { TargetAttributes = {
1DBC40582DA4EDFC0093FCB0 = { 1DBC40582DA4EDFC0093FCB0 = {
@ -1514,10 +1528,14 @@
inputFileListPaths = ( inputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks-${CONFIGURATION}-input-files.xcfilelist", "${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks-${CONFIGURATION}-input-files.xcfilelist",
); );
inputPaths = (
);
name = "[CP] Embed Pods Frameworks"; name = "[CP] Embed Pods Frameworks";
outputFileListPaths = ( outputFileListPaths = (
"${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks-${CONFIGURATION}-output-files.xcfilelist", "${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks-${CONFIGURATION}-output-files.xcfilelist",
); );
outputPaths = (
);
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh; shellPath = /bin/sh;
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks.sh\"\n"; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-ThimraTV/Pods-ThimraTV-frameworks.sh\"\n";
@ -1859,7 +1877,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1.0; MARKETING_VERSION = 1.1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app; PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";
@ -1905,7 +1923,7 @@
"$(inherited)", "$(inherited)",
"@executable_path/Frameworks", "@executable_path/Frameworks",
); );
MARKETING_VERSION = 1.1.0; MARKETING_VERSION = 1.1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app; PRODUCT_BUNDLE_IDENTIFIER = com.thimratv.app;
PRODUCT_NAME = "$(TARGET_NAME)"; PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = ""; PROVISIONING_PROFILE_SPECIFIER = "";

View File

@ -9,78 +9,45 @@ import UIKit
class SPFadeEdgeImageView: UIImageView { class SPFadeEdgeImageView: UIImageView {
// override var image: UIImage? {
// didSet {
//
// if blurredImage != nil, blurredImage == image {
// return
// }
//
//// if let newImage = image?.applyBlur() {
//// self.blurredImage = newImage
//// self.image = newImage
//// }
//
// let context = CIContext(options: nil)
// guard let image = self.image else { return }
// guard let ciImage = CIImage(image: image) else { return }
//
// let filter = CIFilter(name: "CIGaussianBlur")
// filter?.setValue(ciImage, forKey: kCIInputImageKey)
// filter?.setValue(50, forKey: kCIInputRadiusKey) //
// guard let outputImage = filter?.outputImage else { return }
//
// if let cgImage = context.createCGImage(outputImage, from: outputImage.extent) {
// let blurredImage = UIImage(cgImage: cgImage)
// self.blurredImage = blurredImage
// self.image = blurredImage
// }
//
// }
// }
private var blurredImage: UIImage? private var blurredImage: UIImage?
override func layoutSubviews() { override func layoutSubviews() {
super.layoutSubviews() super.layoutSubviews()
applyBlurAndEdgeFadeEffect()
applyCircularFade()
} }
private func applyBlurAndEdgeFadeEffect() { ///
func applyCircularFade(radius: CGFloat? = nil) {
// 2. let maskLayer = CALayer()
let maskLayer = CAShapeLayer()
maskLayer.frame = bounds maskLayer.frame = bounds
// //
let path = UIBezierPath(rect: bounds) UIGraphicsBeginImageContextWithOptions(bounds.size, false, 0)
let insetRect = bounds.insetBy(dx: bounds.width * 0.1, dy: bounds.height * 0.1) guard let ctx = UIGraphicsGetCurrentContext() else { return }
let innerPath = UIBezierPath(roundedRect: insetRect, cornerRadius: 20)
path.append(innerPath)
path.usesEvenOddFillRule = true
maskLayer.path = path.cgPath let center = CGPoint(x: bounds.midX, y: bounds.midY)
maskLayer.fillRule = .evenOdd let maxRadius = radius ?? min(bounds.width, bounds.height) / 2
// 3. let colorSpace = CGColorSpaceCreateDeviceGray()
let gradientLayer = CAGradientLayer() let colors: [CGFloat] = [1, 1, 0, 0] // 10
gradientLayer.frame = bounds let locations: [CGFloat] = [0, 1]
gradientLayer.colors = [
UIColor.black.withAlphaComponent(1).cgColor,
UIColor.black.withAlphaComponent(0).cgColor
]
gradientLayer.startPoint = CGPoint(x: 0.5, y: 0.5)
gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
gradientLayer.locations = [0.5, 1]
gradientLayer.type = .radial
// 4. if let gradient = CGGradient(colorSpace: colorSpace, colorComponents: colors, locations: locations, count: 2) {
let containerLayer = CALayer() ctx.drawRadialGradient(
containerLayer.frame = bounds gradient,
containerLayer.addSublayer(gradientLayer) startCenter: center, startRadius: 0,
containerLayer.mask = maskLayer endCenter: center, endRadius: maxRadius,
options: .drawsAfterEndLocation
)
}
self.layer.mask = containerLayer let maskImage = UIGraphicsGetImageFromCurrentImageContext()?.cgImage
UIGraphicsEndImageContext()
maskLayer.contents = maskImage
self.layer.mask = maskLayer
} }
} }

View File

@ -85,6 +85,7 @@ class SPHomeHeaderView: UICollectionReusableView {
private lazy var bannerBgImageView: SPFadeEdgeImageView = { private lazy var bannerBgImageView: SPFadeEdgeImageView = {
let imageView = SPFadeEdgeImageView() let imageView = SPFadeEdgeImageView()
imageView.contentMode = .scaleAspectFill imageView.contentMode = .scaleAspectFill
imageView.layer.masksToBounds = true
return imageView return imageView
}() }()

View File

@ -10,8 +10,8 @@
</array> </array>
<key>com.apple.developer.associated-domains</key> <key>com.apple.developer.associated-domains</key>
<array> <array>
<string>applinks:moviaapp.go.link</string>
<string>applinks:www.thimratv.com</string> <string>applinks:www.thimratv.com</string>
<string>applinks:moviaapp.go.link</string>
</array> </array>
<key>keychain-access-groups</key> <key>keychain-access-groups</key>
<array/> <array/>