1.1.1发布
This commit is contained in:
parent
9adad48800
commit
e5261c3fc8
@ -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 = "";
|
||||||
|
@ -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] // 中心透明度1,边缘透明度0
|
||||||
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
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
@ -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/>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user