From 9787f4bfdcad2995720b89d0e0012116523eb2fb Mon Sep 17 00:00:00 2001 From: "zhilin.hu" Date: Wed, 29 Oct 2025 18:24:39 +0800 Subject: [PATCH] =?UTF-8?q?feat:=201=E3=80=81=E7=AA=97=E5=8F=A3=E7=94=B1?= =?UTF-8?q?=E5=9B=BA=E5=AE=9A=E5=A4=A7=E5=B0=8F=E6=94=B9=E6=88=90=E5=8F=AF?= =?UTF-8?q?=E6=8B=96=E5=8A=A8=E5=A4=A7=E5=B0=8F=EF=BC=8C=E5=B9=B6=E4=B8=94?= =?UTF-8?q?=E5=86=85=E5=AE=B9=E8=BF=87=E5=A4=9A=E6=97=B6=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E4=B8=8A=E4=B8=8B=E5=B7=A6=E5=8F=B3=E6=BB=9A=E5=8A=A8=E3=80=82?= =?UTF-8?q?1=E3=80=81=E7=82=B9=E5=87=BB=E5=8F=B3=E9=94=AE=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0copy=E6=8C=89=E9=92=AE=EF=BC=8C=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E5=A4=8D=E5=88=B6=E7=BB=84=E4=BB=B6=E7=9A=84=E5=90=8D=E7=A7=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../UserInterfaceState.xcuserstate | Bin 0 -> 70018 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 56 ++++++++++++++++++ .../xcschemes/xcschememanagement.plist | 14 +++++ PodfileLock/PodfileLock/ChildView.swift | 9 ++- PodfileLock/PodfileLock/ViewController.swift | 55 ++++++++++++----- 5 files changed, 118 insertions(+), 16 deletions(-) create mode 100644 PodfileLock/PodfileLock.xcodeproj/project.xcworkspace/xcuserdata/huzhilin.xcuserdatad/UserInterfaceState.xcuserstate create mode 100644 PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist create mode 100644 PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcschemes/xcschememanagement.plist diff --git a/PodfileLock/PodfileLock.xcodeproj/project.xcworkspace/xcuserdata/huzhilin.xcuserdatad/UserInterfaceState.xcuserstate b/PodfileLock/PodfileLock.xcodeproj/project.xcworkspace/xcuserdata/huzhilin.xcuserdatad/UserInterfaceState.xcuserstate new file mode 100644 index 0000000000000000000000000000000000000000..60683ad3a49d7593607f94f0287099f134a370e2 GIT binary patch literal 70018 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 literal 0 HcmV?d00001 diff --git a/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..8f3e43f --- /dev/null +++ b/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + diff --git a/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcschemes/xcschememanagement.plist b/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcschemes/xcschememanagement.plist new file mode 100644 index 0000000..ad144b6 --- /dev/null +++ b/PodfileLock/PodfileLock.xcodeproj/xcuserdata/huzhilin.xcuserdatad/xcschemes/xcschememanagement.plist @@ -0,0 +1,14 @@ + + + + + SchemeUserState + + PodfileLock.xcscheme_^#shared#^_ + + orderHint + 0 + + + + diff --git a/PodfileLock/PodfileLock/ChildView.swift b/PodfileLock/PodfileLock/ChildView.swift index 5de7385..5daf44a 100644 --- a/PodfileLock/PodfileLock/ChildView.swift +++ b/PodfileLock/PodfileLock/ChildView.swift @@ -12,7 +12,7 @@ var layerContentView = FlippedView() var itemContentView = FlippedView() -var allLines: [CAShapeLayer] = [] +//var allLines: [CAShapeLayer] = [] var selectedBtn: NSButton? var node_dic:[Int: DependencyNode] = [:] var btns_dic:[Int: NSButton] = [:] @@ -151,6 +151,11 @@ func drawItem(_ item: DependencyNode, vc: ViewController) { button.tag = item.index button.bezelStyle = .regularSquare button.isBordered = false + let menu = NSMenu() + let copyItem = NSMenuItem(title: "复制", action: #selector(ViewController.buttonMenuCopyClicked(_:)), keyEquivalent: "") + copyItem.representedObject = button + menu.addItem(copyItem) + button.menu = menu vc.addAction(button) // 添加按钮到视图中 @@ -173,7 +178,7 @@ func drawline(first: NSButton, sec: NSButton, up: Bool) { lineLayer.strokeColor = sec.layer?.backgroundColor ?? (NSColor.black).cgColor lineLayer.lineWidth = 1.0 layerContentView.layer?.addSublayer(lineLayer) - allLines.append(lineLayer) +// allLines.append(lineLayer) } func pointLine(btn: NSButton) -> CGPoint { diff --git a/PodfileLock/PodfileLock/ViewController.swift b/PodfileLock/PodfileLock/ViewController.swift index 643be46..91e879f 100644 --- a/PodfileLock/PodfileLock/ViewController.swift +++ b/PodfileLock/PodfileLock/ViewController.swift @@ -5,10 +5,28 @@ import Foundation var podfilePath: URL? +extension NSView { + func edge(equalTo aSuperview: NSView) { + translatesAutoresizingMaskIntoConstraints = false + leftAnchor.constraint(equalTo: aSuperview.leftAnchor).isActive = true + rightAnchor.constraint(equalTo: aSuperview.rightAnchor).isActive = true + topAnchor.constraint(equalTo: aSuperview.topAnchor).isActive = true + bottomAnchor.constraint(equalTo: aSuperview.bottomAnchor).isActive = true + } +} class ViewController: NSViewController { - + lazy var scrollView: NSScrollView = { + let sView = NSScrollView() + sView.hasVerticalScroller = true + sView.hasHorizontalScroller = true + sView.autohidesScrollers = true + return sView + }() + let cView = NSView() override func viewDidLoad() { super.viewDidLoad() + view.addSubview(scrollView) + scrollView.edge(equalTo: view) view.wantsLayer = true view.layer?.backgroundColor = NSColor.white.cgColor @@ -16,11 +34,15 @@ class ViewController: NSViewController { layerContentView.frame = view.bounds itemContentView.frame = view.bounds + cView.frame = view.bounds itemContentView.layer?.backgroundColor = NSColor.clear.cgColor - view.addSubview(layerContentView) - view.addSubview(itemContentView) + scrollView.documentView = cView + cView.addSubview(layerContentView) + cView.addSubview(itemContentView) + layerContentView.edge(equalTo: cView) + itemContentView.edge(equalTo: cView) } override func viewDidAppear() { super.viewDidAppear() @@ -76,30 +98,35 @@ class ViewController: NSViewController { // 更新窗口大小 let newSize = NSSize(width: max_w + 100, height: max_h + 100) - resizeWindow(to: newSize) - layerContentView.frame = view.bounds - itemContentView.frame = view.bounds +// resizeWindow(to: newSize) + cView.frame = NSRect(origin: .zero, size: newSize) } // 调整窗口大小的方法 var window: NSWindow? { return view.window } - func resizeWindow(to newSize: NSSize) { - guard let window = window else { return } - - var frame = window.frame - frame.size = newSize - window.setFrame(frame, display: true) - } +// func resizeWindow(to newSize: NSSize) { +// guard let window = window else { return } +// +// var frame = window.frame +// frame.size = newSize +// window.setFrame(frame, display: true) +// } // 按钮点击事件处理方法 func addAction(_ sender: NSButton) { sender.action = #selector(buttonClicked(_:)) } - @objc func buttonClicked(_ sender: NSButton) { itemClicked(sender, view: view) } + @objc func buttonMenuCopyClicked(_ sender: NSMenuItem) { + guard let button = sender.representedObject as? NSButton else { return } + let title = button.attributedTitle.string + let pasteboard = NSPasteboard.general + pasteboard.clearContents() + pasteboard.setString(title, forType: .string) + } }