图片浏览视图解决循环引用问题
This commit is contained in:
parent
6d9cb4afd2
commit
03e20db3b9
@ -35,6 +35,7 @@
|
|||||||
009DFB132BC8EA90007B56E8 /* MenuVCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */; };
|
009DFB132BC8EA90007B56E8 /* MenuVCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */; };
|
||||||
00B946252B67B7DE00DA668F /* CCSpatialPlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */; };
|
00B946252B67B7DE00DA668F /* CCSpatialPlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */; };
|
||||||
00BD87862BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BD87852BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift */; };
|
00BD87862BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BD87852BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift */; };
|
||||||
|
00BD87972BE10B800014E8B3 /* DisplayLinkProxy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00BD87962BE10B800014E8B3 /* DisplayLinkProxy.swift */; };
|
||||||
00C665732BAA81F900C309C3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 00C665722BAA81F900C309C3 /* GoogleService-Info.plist */; };
|
00C665732BAA81F900C309C3 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 00C665722BAA81F900C309C3 /* GoogleService-Info.plist */; };
|
||||||
00C665792BAA94EA00C309C3 /* CopyCrashHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C665772BAA941E00C309C3 /* CopyCrashHandler.swift */; };
|
00C665792BAA94EA00C309C3 /* CopyCrashHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C665772BAA941E00C309C3 /* CopyCrashHandler.swift */; };
|
||||||
00D33BF42B998BF700604A44 /* SpatialImageConvertor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00D33BF32B998BF700604A44 /* SpatialImageConvertor.swift */; };
|
00D33BF42B998BF700604A44 /* SpatialImageConvertor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00D33BF32B998BF700604A44 /* SpatialImageConvertor.swift */; };
|
||||||
@ -149,6 +150,7 @@
|
|||||||
009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuVCCell.swift; sourceTree = "<group>"; };
|
009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MenuVCCell.swift; sourceTree = "<group>"; };
|
||||||
00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPlayView.swift; sourceTree = "<group>"; };
|
00B946242B67B7DE00DA668F /* CCSpatialPlayView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPlayView.swift; sourceTree = "<group>"; };
|
||||||
00BD87852BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPhotoDisplayEx.swift; sourceTree = "<group>"; };
|
00BD87852BDE595F0014E8B3 /* CCSpatialPhotoDisplayEx.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CCSpatialPhotoDisplayEx.swift; sourceTree = "<group>"; };
|
||||||
|
00BD87962BE10B800014E8B3 /* DisplayLinkProxy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DisplayLinkProxy.swift; sourceTree = "<group>"; };
|
||||||
00C665722BAA81F900C309C3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
00C665722BAA81F900C309C3 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
|
||||||
00C665772BAA941E00C309C3 /* CopyCrashHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyCrashHandler.swift; sourceTree = "<group>"; };
|
00C665772BAA941E00C309C3 /* CopyCrashHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyCrashHandler.swift; sourceTree = "<group>"; };
|
||||||
00D33BF32B998BF700604A44 /* SpatialImageConvertor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpatialImageConvertor.swift; sourceTree = "<group>"; };
|
00D33BF32B998BF700604A44 /* SpatialImageConvertor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpatialImageConvertor.swift; sourceTree = "<group>"; };
|
||||||
@ -393,6 +395,7 @@
|
|||||||
005580772B9F1525004B9567 /* ZZHHelper.swift */,
|
005580772B9F1525004B9567 /* ZZHHelper.swift */,
|
||||||
00ED6B332BA04AC200915BDE /* PlayByTransferConvertor.swift */,
|
00ED6B332BA04AC200915BDE /* PlayByTransferConvertor.swift */,
|
||||||
00374AE02BC92B7C00F1F20F /* ZNetUtil.swift */,
|
00374AE02BC92B7C00F1F20F /* ZNetUtil.swift */,
|
||||||
|
00BD87962BE10B800014E8B3 /* DisplayLinkProxy.swift */,
|
||||||
);
|
);
|
||||||
path = Util;
|
path = Util;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
@ -882,6 +885,7 @@
|
|||||||
006B61CD2BBA4E3D003FCB49 /* UserInfo.swift in Sources */,
|
006B61CD2BBA4E3D003FCB49 /* UserInfo.swift in Sources */,
|
||||||
AF2120AF2B4E930400400B7F /* RootManager.swift in Sources */,
|
AF2120AF2B4E930400400B7F /* RootManager.swift in Sources */,
|
||||||
1E02C9322B8990C600DD3143 /* CCDeviceOperationListView.swift in Sources */,
|
1E02C9322B8990C600DD3143 /* CCDeviceOperationListView.swift in Sources */,
|
||||||
|
00BD87972BE10B800014E8B3 /* DisplayLinkProxy.swift in Sources */,
|
||||||
AF2120DA2B4E9BD400400B7F /* CCAlert.swift in Sources */,
|
AF2120DA2B4E9BD400400B7F /* CCAlert.swift in Sources */,
|
||||||
006B61D12BBA5DB4003FCB49 /* MembershipProductView.swift in Sources */,
|
006B61D12BBA5DB4003FCB49 /* MembershipProductView.swift in Sources */,
|
||||||
1EFB8C702B88DA4800C72119 /* CCBottomMenuCell.swift in Sources */,
|
1EFB8C702B88DA4800C72119 /* CCBottomMenuCell.swift in Sources */,
|
||||||
|
|||||||
@ -196,6 +196,7 @@ class CCSpatialPhotoDisplayController: BaseController {
|
|||||||
NotificationCenter.default.removeObserver(self)
|
NotificationCenter.default.removeObserver(self)
|
||||||
// 停止监听设备方向变化
|
// 停止监听设备方向变化
|
||||||
UIDevice.current.endGeneratingDeviceOrientationNotifications()
|
UIDevice.current.endGeneratingDeviceOrientationNotifications()
|
||||||
|
externalDispalylink?.invalidate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -434,7 +435,7 @@ class CCSpatialPhotoDisplayController: BaseController {
|
|||||||
let ws = us as! UIWindowScene
|
let ws = us as! UIWindowScene
|
||||||
if ws.session.role.rawValue == "UIWindowSceneSessionRoleExternalDisplayNonInteractive"{
|
if ws.session.role.rawValue == "UIWindowSceneSessionRoleExternalDisplayNonInteractive"{
|
||||||
externalVC = ws.windows.first?.rootViewController as? ZZHExternalViewController
|
externalVC = ws.windows.first?.rootViewController as? ZZHExternalViewController
|
||||||
externalDispalylink = ws.windows.first?.screen.displayLink(withTarget: self, selector: #selector(displayUpdate(caDisplayLink:)))
|
externalDispalylink = ws.windows.first?.screen.displayLink(withTarget: DisplayLinkProxy.with(target: self), selector: #selector(displayUpdate(caDisplayLink:)))
|
||||||
externalDispalylink?.add(to: RunLoop.main, forMode: RunLoop.Mode.common)
|
externalDispalylink?.add(to: RunLoop.main, forMode: RunLoop.Mode.common)
|
||||||
externalVC?.imageView?.isHidden = false
|
externalVC?.imageView?.isHidden = false
|
||||||
externalVC?.playerLayer?.isHidden = true
|
externalVC?.playerLayer?.isHidden = true
|
||||||
|
|||||||
@ -66,7 +66,7 @@ extension CCSpatialPhotoDisplayController {
|
|||||||
//单眼2D
|
//单眼2D
|
||||||
func monocular2DImgWith(drawImg:UIImage,scale:CGFloat, callback:@escaping (_ image:UIImage)->Void) {
|
func monocular2DImgWith(drawImg:UIImage,scale:CGFloat, callback:@escaping (_ image:UIImage)->Void) {
|
||||||
if scale > 1 || scale < 1 {
|
if scale > 1 || scale < 1 {
|
||||||
DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
|
// DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
|
||||||
let drawImageSize = drawImg.size
|
let drawImageSize = drawImg.size
|
||||||
let newImgSize = CGSizeMake(drawImageSize.width * scale, drawImageSize.height * scale)
|
let newImgSize = CGSizeMake(drawImageSize.width * scale, drawImageSize.height * scale)
|
||||||
let newRect = CGRect(origin: CGPoint(x: (drawImageSize.width - newImgSize.width) * 0.5, y: (drawImageSize.height - newImgSize.height) * 0.5), size: newImgSize)
|
let newRect = CGRect(origin: CGPoint(x: (drawImageSize.width - newImgSize.width) * 0.5, y: (drawImageSize.height - newImgSize.height) * 0.5), size: newImgSize)
|
||||||
@ -74,10 +74,10 @@ extension CCSpatialPhotoDisplayController {
|
|||||||
drawImg.draw(in: newRect)
|
drawImg.draw(in: newRect)
|
||||||
let image = UIGraphicsGetImageFromCurrentImageContext()!
|
let image = UIGraphicsGetImageFromCurrentImageContext()!
|
||||||
UIGraphicsEndImageContext();
|
UIGraphicsEndImageContext();
|
||||||
DispatchQueue.main.async {
|
// DispatchQueue.main.async {
|
||||||
callback(image)
|
callback(image)
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
callback(drawImg)
|
callback(drawImg)
|
||||||
|
|||||||
@ -0,0 +1,23 @@
|
|||||||
|
//
|
||||||
|
// DisplayLinkProxy.swift
|
||||||
|
// SwiftProject
|
||||||
|
//
|
||||||
|
// Created by aaa on 2024/4/30.
|
||||||
|
//
|
||||||
|
|
||||||
|
import Foundation
|
||||||
|
class DisplayLinkProxy: NSObject {
|
||||||
|
// 弱指针
|
||||||
|
weak var target: NSObject?
|
||||||
|
|
||||||
|
class func with(target: NSObject) -> DisplayLinkProxy {
|
||||||
|
let proxy = DisplayLinkProxy()
|
||||||
|
proxy.target = target
|
||||||
|
return proxy;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 重点:消息转发机制
|
||||||
|
override func forwardingTarget(for aSelector: Selector!) -> Any? {
|
||||||
|
return target
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user