图片浏览视图解决循环引用问题
This commit is contained in:
parent
6d9cb4afd2
commit
03e20db3b9
@ -35,6 +35,7 @@
|
||||
009DFB132BC8EA90007B56E8 /* MenuVCCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 009DFB122BC8EA90007B56E8 /* MenuVCCell.swift */; };
|
||||
00B946252B67B7DE00DA668F /* CCSpatialPlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00B946242B67B7DE00DA668F /* CCSpatialPlayView.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 */; };
|
||||
00C665792BAA94EA00C309C3 /* CopyCrashHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 00C665772BAA941E00C309C3 /* CopyCrashHandler.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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
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>"; };
|
||||
@ -393,6 +395,7 @@
|
||||
005580772B9F1525004B9567 /* ZZHHelper.swift */,
|
||||
00ED6B332BA04AC200915BDE /* PlayByTransferConvertor.swift */,
|
||||
00374AE02BC92B7C00F1F20F /* ZNetUtil.swift */,
|
||||
00BD87962BE10B800014E8B3 /* DisplayLinkProxy.swift */,
|
||||
);
|
||||
path = Util;
|
||||
sourceTree = "<group>";
|
||||
@ -882,6 +885,7 @@
|
||||
006B61CD2BBA4E3D003FCB49 /* UserInfo.swift in Sources */,
|
||||
AF2120AF2B4E930400400B7F /* RootManager.swift in Sources */,
|
||||
1E02C9322B8990C600DD3143 /* CCDeviceOperationListView.swift in Sources */,
|
||||
00BD87972BE10B800014E8B3 /* DisplayLinkProxy.swift in Sources */,
|
||||
AF2120DA2B4E9BD400400B7F /* CCAlert.swift in Sources */,
|
||||
006B61D12BBA5DB4003FCB49 /* MembershipProductView.swift in Sources */,
|
||||
1EFB8C702B88DA4800C72119 /* CCBottomMenuCell.swift in Sources */,
|
||||
|
||||
@ -196,6 +196,7 @@ class CCSpatialPhotoDisplayController: BaseController {
|
||||
NotificationCenter.default.removeObserver(self)
|
||||
// 停止监听设备方向变化
|
||||
UIDevice.current.endGeneratingDeviceOrientationNotifications()
|
||||
externalDispalylink?.invalidate()
|
||||
}
|
||||
|
||||
|
||||
@ -434,7 +435,7 @@ class CCSpatialPhotoDisplayController: BaseController {
|
||||
let ws = us as! UIWindowScene
|
||||
if ws.session.role.rawValue == "UIWindowSceneSessionRoleExternalDisplayNonInteractive"{
|
||||
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)
|
||||
externalVC?.imageView?.isHidden = false
|
||||
externalVC?.playerLayer?.isHidden = true
|
||||
|
||||
@ -66,7 +66,7 @@ extension CCSpatialPhotoDisplayController {
|
||||
//单眼2D
|
||||
func monocular2DImgWith(drawImg:UIImage,scale:CGFloat, callback:@escaping (_ image:UIImage)->Void) {
|
||||
if scale > 1 || scale < 1 {
|
||||
DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
|
||||
// DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
|
||||
let drawImageSize = drawImg.size
|
||||
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)
|
||||
@ -74,10 +74,10 @@ extension CCSpatialPhotoDisplayController {
|
||||
drawImg.draw(in: newRect)
|
||||
let image = UIGraphicsGetImageFromCurrentImageContext()!
|
||||
UIGraphicsEndImageContext();
|
||||
DispatchQueue.main.async {
|
||||
// DispatchQueue.main.async {
|
||||
callback(image)
|
||||
}
|
||||
}
|
||||
// }
|
||||
// }
|
||||
}
|
||||
else {
|
||||
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