Skip to content

Commit da5c2b4

Browse files
author
Sven
committed
feat: token 布局。
1 parent a2892e3 commit da5c2b4

File tree

5 files changed

+48
-83
lines changed

5 files changed

+48
-83
lines changed

SwiftJSONModeler For Xcode.xcodeproj/xcuserdata/yibin.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -148,5 +148,21 @@
148148
landmarkType = "7">
149149
</BreakpointContent>
150150
</BreakpointProxy>
151+
<BreakpointProxy
152+
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
153+
<BreakpointContent
154+
uuid = "7066EC06-1947-48C9-88AF-A0E8E9942902"
155+
shouldBeEnabled = "Yes"
156+
ignoreCount = "0"
157+
continueAfterRunningActions = "No"
158+
filePath = "SwiftJSONModeler For Xcode/Controller/TokenViewController.swift"
159+
startingColumnNumber = "9223372036854775807"
160+
endingColumnNumber = "9223372036854775807"
161+
startingLineNumber = "35"
162+
endingLineNumber = "35"
163+
landmarkName = "setupView()"
164+
landmarkType = "7">
165+
</BreakpointContent>
166+
</BreakpointProxy>
151167
</Breakpoints>
152168
</Bucket>

SwiftJSONModeler For Xcode/Base.lproj/Main.storyboard

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1219,13 +1219,20 @@
12191219
<constraint firstItem="u2F-7R-G6v" firstAttribute="centerY" secondItem="Z2i-Lv-jye" secondAttribute="centerY" id="y3K-49-SU9"/>
12201220
</constraints>
12211221
</customView>
1222+
<customView translatesAutoresizingMaskIntoConstraints="NO" id="glB-I7-NIu">
1223+
<rect key="frame" x="0.0" y="0.0" width="698" height="359"/>
1224+
</customView>
12221225
<stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="hgT-F4-Ywd">
12231226
<rect key="frame" x="0.0" y="0.0" width="698" height="359"/>
12241227
</stackView>
12251228
</subviews>
12261229
<constraints>
1230+
<constraint firstItem="glB-I7-NIu" firstAttribute="leading" secondItem="hgT-F4-Ywd" secondAttribute="leading" id="9fs-4o-Prp"/>
12271231
<constraint firstAttribute="bottom" secondItem="hgT-F4-Ywd" secondAttribute="bottom" id="G92-4h-kxs"/>
1232+
<constraint firstItem="glB-I7-NIu" firstAttribute="bottom" secondItem="hgT-F4-Ywd" secondAttribute="bottom" id="Ipq-CR-qmd"/>
12281233
<constraint firstItem="hgT-F4-Ywd" firstAttribute="top" secondItem="Z2i-Lv-jye" secondAttribute="bottom" id="MSY-MH-0Pe"/>
1234+
<constraint firstItem="glB-I7-NIu" firstAttribute="trailing" secondItem="hgT-F4-Ywd" secondAttribute="trailing" id="VbB-Mh-aXH"/>
1235+
<constraint firstItem="glB-I7-NIu" firstAttribute="top" secondItem="hgT-F4-Ywd" secondAttribute="top" id="Vra-gl-ywe"/>
12291236
<constraint firstItem="Z2i-Lv-jye" firstAttribute="leading" secondItem="Dfr-yA-26T" secondAttribute="leading" id="YOG-xA-3ea"/>
12301237
<constraint firstAttribute="trailing" secondItem="Z2i-Lv-jye" secondAttribute="trailing" id="ZTi-yZ-WzE"/>
12311238
<constraint firstAttribute="trailing" secondItem="hgT-F4-Ywd" secondAttribute="trailing" id="sgC-Hw-5pq"/>
@@ -1251,6 +1258,7 @@
12511258
</view>
12521259
<connections>
12531260
<outlet property="stackView" destination="hgT-F4-Ywd" id="rV5-aP-Wd4"/>
1261+
<outlet property="tokenContentView" destination="glB-I7-NIu" id="pJ5-fO-Jas"/>
12541262
</connections>
12551263
</viewController>
12561264
<customObject id="d6U-Sm-fOC" userLabel="First Responder" customClass="NSResponder" sceneMemberID="firstResponder"/>

SwiftJSONModeler For Xcode/Controller/TokenViewController.swift

Lines changed: 14 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import Cocoa
1111
class TokenViewController: NSViewController {
1212

1313
@IBOutlet weak var stackView: NSStackView!
14+
@IBOutlet weak var tokenContentView: NSView!
15+
private let tokenContentLayer = CALayer()
1416
private let rowHeight: CGFloat = 60
1517
private var dataSource: [(title: String, token: String)] = []
1618

@@ -22,78 +24,24 @@ class TokenViewController: NSViewController {
2224

2325
override func viewWillLayout() {
2426
super.viewWillLayout()
27+
tokenContentLayer.frame = tokenContentView.bounds
2528
}
2629

2730
private func setupView() {
28-
updateTokenView()
29-
}
30-
31-
/// 删除一行token 数据
32-
private func removeOneRowToken(_ index: Int) {
33-
if index < dataSource.count {
34-
dataSource.remove(at: index)
35-
updateTokenView()
36-
} else {
37-
38-
}
39-
40-
}
31+
tokenContentLayer.borderWidth = 1.0
32+
tokenContentLayer.borderColor = NSColor.lightGray.cgColor
33+
tokenContentLayer.cornerRadius = 10
34+
tokenContentView.layer = tokenContentLayer
4135

42-
private func updateTokenView() {
43-
let tokenCount = dataSource.count + 1
44-
let viewsCount = tokenViews.count
45-
// 需要增加
46-
if tokenCount > viewsCount {
47-
let addNumber = tokenCount - viewsCount
48-
let views = [1...addNumber].map {
49-
(value) -> TokenView in
50-
let tokenView = TokenView()
51-
tokenView.heightAnchor.constraint(equalToConstant: rowHeight).isActive = true
52-
stackView.addArrangedSubview(tokenView)
53-
tokenView.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 1).isActive = true
54-
return tokenView
55-
}
56-
tokenViews.append(contentsOf: views)
57-
}
58-
// 需要删除
59-
if tokenCount < viewsCount {
60-
stackView.removeArrangedSubview(tokenViews.last!)
61-
tokenViews.removeLast()
62-
63-
// let deleteNumber = viewsCount - tokenCount
64-
// let willRemoveTokenView = tokenViews.dropFirst(deleteNumber)
65-
// willRemoveTokenView.forEach { stackView.removeArrangedSubview($0) }
66-
}
67-
for (index, tokenView) in tokenViews.enumerated() {
68-
tokenView.titleTextField.stringValue = ""
69-
tokenView.tokenTextField.stringValue = ""
70-
if index < dataSource.count {
71-
let value = dataSource[index]
72-
tokenView.titleTextField.stringValue = value.title
73-
tokenView.tokenTextField.stringValue = value.token
74-
}
75-
tokenView.buttonTag = index
76-
tokenView.deleteClosure = {
77-
index in
78-
print("删除第\(index+1)")
79-
self.removeOneRowToken(index)
80-
}
81-
tokenView.addClosure = {
82-
[weak self] index in
83-
self?.updateDataSource()
84-
self?.updateTokenView()
85-
}
86-
}
87-
}
88-
/// 保存一次值
89-
private func updateDataSource() {
90-
dataSource = []
91-
for (index, value) in tokenViews.enumerated() {
92-
dataSource.append((title: value.titleTextField.stringValue, token: value.tokenTextField.stringValue))
93-
}
36+
let tokenView = TokenView()
37+
tokenView.heightAnchor.constraint(equalToConstant: rowHeight).isActive = true
38+
stackView.addArrangedSubview(tokenView)
39+
tokenView.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 1).isActive = true
40+
stackView.layer?.borderColor = NSColor.gray.cgColor
41+
stackView.layer?.borderWidth = 1.0
9442
}
9543

96-
44+
9745

9846
@IBAction func AddButtonTap(_ sender: NSButton) {
9947

SwiftJSONModeler For Xcode/View/TokenView.swift

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,10 @@ class TokenView: NSView {
1919
}
2020

2121
var deleteClosure: (_ index: Int) -> Void = { _ in }
22-
var addClosure: (_ index: Int) -> Void = { _ in }
23-
22+
23+
@IBOutlet weak var titleLabel: NSTextField!
2424
@IBOutlet private var contentView: NSView!
25-
@IBOutlet weak var titleTextField: NSTextField!
26-
@IBOutlet weak var tokenTextField: NSTextField!
27-
@IBOutlet weak var addButton: NSButton!
25+
@IBOutlet weak var tokenLabel: NSTextField!
2826
@IBOutlet private weak var deleteButton: NSButton!
2927
override init(frame frameRect: NSRect) {
3028
super.init(frame: frameRect)
@@ -49,15 +47,11 @@ class TokenView: NSView {
4947
addSubview(contentView)
5048
contentView.layer?.backgroundColor = NSColor.orange.cgColor
5149
contentView.frame = bounds
52-
53-
addButton.attributedTitle = NSAttributedString(string: "添加", attributes: [NSAttributedString.Key.foregroundColor : NSColor.blue])
5450
deleteButton.attributedTitle = NSAttributedString(string: "删除", attributes: [NSAttributedString.Key.foregroundColor : NSColor.red])
5551
}
5652
@IBAction func deleteButtonTap(_ sender: NSButton) {
5753
deleteClosure(sender.tag)
5854
}
5955

60-
@IBAction func addButtonTap(_ sender: NSButton) {
61-
addClosure(sender.tag)
62-
}
56+
6357
}

SwiftJSONModeler For Xcode/View/TokenView.xib

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
<rect key="frame" x="0.0" y="0.0" width="601" height="69"/>
2121
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
2222
<subviews>
23-
<button verticalHuggingPriority="750" ambiguous="YES" translatesAutoresizingMaskIntoConstraints="NO" id="VBt-xJ-29C">
23+
<button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="VBt-xJ-29C">
2424
<rect key="frame" x="520" y="13" width="72" height="41"/>
2525
<constraints>
2626
<constraint firstAttribute="height" constant="30" id="5Pg-yE-7Dj"/>
@@ -35,18 +35,15 @@
3535
</connections>
3636
</button>
3737
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FnZ-St-Em8">
38-
<rect key="frame" x="18" y="27" width="124" height="16"/>
39-
<constraints>
40-
<constraint firstAttribute="width" constant="120" id="evs-5F-D1u"/>
41-
</constraints>
38+
<rect key="frame" x="18" y="27" width="178" height="16"/>
4239
<textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="3f7-vd-1dp">
4340
<font key="font" metaFont="system"/>
4441
<color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
4542
<color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
4643
</textFieldCell>
4744
</textField>
4845
<textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Kv6-OL-lf6">
49-
<rect key="frame" x="168" y="27" width="330" height="16"/>
46+
<rect key="frame" x="222" y="27" width="276" height="16"/>
5047
<textFieldCell key="cell" lineBreakMode="clipping" title="Label" id="pD1-Du-AsE">
5148
<font key="font" metaFont="system"/>
5249
<color key="textColor" white="0.33333333329999998" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
@@ -55,11 +52,13 @@
5552
</textField>
5653
</subviews>
5754
<constraints>
58-
<constraint firstItem="Kv6-OL-lf6" firstAttribute="leading" secondItem="FnZ-St-Em8" secondAttribute="trailing" constant="30" id="7u5-AB-wKU"/>
55+
<constraint firstItem="Kv6-OL-lf6" firstAttribute="leading" secondItem="FnZ-St-Em8" secondAttribute="trailing" constant="30" id="8he-1z-hTO"/>
5956
<constraint firstItem="VBt-xJ-29C" firstAttribute="leading" secondItem="Kv6-OL-lf6" secondAttribute="trailing" constant="30" id="9uq-9K-Xxu"/>
6057
<constraint firstItem="FnZ-St-Em8" firstAttribute="centerY" secondItem="BBH-3G-lJZ" secondAttribute="centerY" id="AAB-kt-rsz"/>
6158
<constraint firstAttribute="trailing" secondItem="VBt-xJ-29C" secondAttribute="trailing" constant="15" id="DOD-qj-VwL"/>
59+
<constraint firstItem="Kv6-OL-lf6" firstAttribute="leading" secondItem="BBH-3G-lJZ" secondAttribute="leading" constant="224" id="SYq-0H-eFv"/>
6260
<constraint firstItem="FnZ-St-Em8" firstAttribute="leading" secondItem="BBH-3G-lJZ" secondAttribute="leading" constant="20" id="XhK-i0-6eM"/>
61+
<constraint firstItem="VBt-xJ-29C" firstAttribute="centerY" secondItem="BBH-3G-lJZ" secondAttribute="centerY" id="YBs-wK-WKZ"/>
6362
<constraint firstItem="Kv6-OL-lf6" firstAttribute="centerY" secondItem="BBH-3G-lJZ" secondAttribute="centerY" id="t9C-gX-YKY"/>
6463
</constraints>
6564
<point key="canvasLocation" x="-126.5" y="154.5"/>

0 commit comments

Comments
 (0)