Skip to content

Commit 859ff44

Browse files
committed
优化命名, 完善点击事件相关限制, 文本附件增加点击事件支持, 完善Demo
1 parent 34e0dd1 commit 859ff44

File tree

16 files changed

+282
-149
lines changed

16 files changed

+282
-149
lines changed

AttributedString.xcodeproj/project.pbxproj

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
9B267B7A244066C1002F571E /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0A2A3723851EB6003D8A55 /* Extension.swift */; };
2121
9B267B7B244066C1002F571E /* AttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E899D23823FFD009EBEBE /* AttributedString.swift */; };
2222
9B267B7C244066C1002F571E /* Interpolation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89A123826D8E009EBEBE /* Interpolation.swift */; };
23-
9B267B7D244066C1002F571E /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Style.swift */; };
23+
9B267B7D244066C1002F571E /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Attribute.swift */; };
2424
9B267B7E244066C1002F571E /* ParagraphStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */; };
2525
9B267B7F244066C1002F571E /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E42382C488009EBEBE /* Attachment.swift */; };
2626
9B267B8B24406B2F002F571E /* WKInterfaceButtonExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B267B8924406B2F002F571E /* WKInterfaceButtonExtension.swift */; };
@@ -35,7 +35,7 @@
3535
9B267BB62440811F002F571E /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0A2A3723851EB6003D8A55 /* Extension.swift */; };
3636
9B267BB72440811F002F571E /* AttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E899D23823FFD009EBEBE /* AttributedString.swift */; };
3737
9B267BB82440811F002F571E /* Interpolation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89A123826D8E009EBEBE /* Interpolation.swift */; };
38-
9B267BB92440811F002F571E /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Style.swift */; };
38+
9B267BB92440811F002F571E /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Attribute.swift */; };
3939
9B267BBA2440811F002F571E /* ParagraphStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */; };
4040
9B267BBB2440811F002F571E /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E42382C488009EBEBE /* Attachment.swift */; };
4141
9B267BC0244081BB002F571E /* AttributedString_tvOS_Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B267BBF244081BB002F571E /* AttributedString_tvOS_Tests.swift */; };
@@ -51,7 +51,7 @@
5151
9B34BD43243DBEA900932E6C /* Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B0A2A3723851EB6003D8A55 /* Extension.swift */; };
5252
9B34BD44243DBEA900932E6C /* AttributedString.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E899D23823FFD009EBEBE /* AttributedString.swift */; };
5353
9B34BD45243DBEA900932E6C /* Interpolation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89A123826D8E009EBEBE /* Interpolation.swift */; };
54-
9B34BD46243DBEA900932E6C /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Style.swift */; };
54+
9B34BD46243DBEA900932E6C /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Attribute.swift */; };
5555
9B34BD47243DBEA900932E6C /* ParagraphStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */; };
5656
9B34BD48243DBEA900932E6C /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E42382C488009EBEBE /* Attachment.swift */; };
5757
9B34BD65243DFACE00932E6C /* NSShadowExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B34BD63243DFAA600932E6C /* NSShadowExtension.swift */; };
@@ -66,13 +66,17 @@
6666
9B6E89B12382766F009EBEBE /* CGRectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89B02382766F009EBEBE /* CGRectExtension.swift */; };
6767
9B6E89B3238276B0009EBEBE /* CGPointExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89B2238276B0009EBEBE /* CGPointExtension.swift */; };
6868
9B6E89DF23828F7C009EBEBE /* NSShadowExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89DE23828F7C009EBEBE /* NSShadowExtension.swift */; };
69-
9B6E89E12382C301009EBEBE /* Style.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Style.swift */; };
69+
9B6E89E12382C301009EBEBE /* Attribute.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E02382C301009EBEBE /* Attribute.swift */; };
7070
9B6E89E32382C392009EBEBE /* ParagraphStyle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */; };
7171
9B6E89E52382C488009EBEBE /* Attachment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B6E89E42382C488009EBEBE /* Attachment.swift */; };
7272
9B8765A024850742009C51C2 /* ObjectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B87659F24850742009C51C2 /* ObjectExtension.swift */; };
7373
9B8765A124850742009C51C2 /* ObjectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B87659F24850742009C51C2 /* ObjectExtension.swift */; };
7474
9B8765A224850742009C51C2 /* ObjectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B87659F24850742009C51C2 /* ObjectExtension.swift */; };
7575
9B8765A324850742009C51C2 /* ObjectExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B87659F24850742009C51C2 /* ObjectExtension.swift */; };
76+
9BE7D4C12488984400DE1176 /* AttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */; };
77+
9BE7D4C224889F3E00DE1176 /* AttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */; };
78+
9BE7D4C324889F3F00DE1176 /* AttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */; };
79+
9BE7D4C424889F4000DE1176 /* AttributedStringExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */; };
7680
/* End PBXBuildFile section */
7781

7882
/* Begin PBXContainerItemProxy section */
@@ -130,10 +134,11 @@
130134
9B6E89B02382766F009EBEBE /* CGRectExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGRectExtension.swift; sourceTree = "<group>"; };
131135
9B6E89B2238276B0009EBEBE /* CGPointExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CGPointExtension.swift; sourceTree = "<group>"; };
132136
9B6E89DE23828F7C009EBEBE /* NSShadowExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NSShadowExtension.swift; sourceTree = "<group>"; };
133-
9B6E89E02382C301009EBEBE /* Style.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Style.swift; sourceTree = "<group>"; };
137+
9B6E89E02382C301009EBEBE /* Attribute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Attribute.swift; sourceTree = "<group>"; };
134138
9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParagraphStyle.swift; sourceTree = "<group>"; };
135139
9B6E89E42382C488009EBEBE /* Attachment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Attachment.swift; sourceTree = "<group>"; };
136140
9B87659F24850742009C51C2 /* ObjectExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ObjectExtension.swift; sourceTree = "<group>"; };
141+
9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AttributedStringExtension.swift; sourceTree = "<group>"; };
137142
/* End PBXFileReference section */
138143

139144
/* Begin PBXFrameworksBuildPhase section */
@@ -245,7 +250,7 @@
245250
9B6E895023823C40009EBEBE /* Info.plist */,
246251
9B6E899D23823FFD009EBEBE /* AttributedString.swift */,
247252
9B6E89A123826D8E009EBEBE /* Interpolation.swift */,
248-
9B6E89E02382C301009EBEBE /* Style.swift */,
253+
9B6E89E02382C301009EBEBE /* Attribute.swift */,
249254
9B6E89E22382C392009EBEBE /* ParagraphStyle.swift */,
250255
9B6E89E42382C488009EBEBE /* Attachment.swift */,
251256
);
@@ -261,6 +266,7 @@
261266
9B6E89A42382739C009EBEBE /* UIKit */,
262267
9B0A2A3723851EB6003D8A55 /* Extension.swift */,
263268
9B87659F24850742009C51C2 /* ObjectExtension.swift */,
269+
9BE7D4C02488984400DE1176 /* AttributedStringExtension.swift */,
264270
);
265271
path = Extension;
266272
sourceTree = "<group>";
@@ -592,6 +598,7 @@
592598
isa = PBXSourcesBuildPhase;
593599
buildActionMask = 2147483647;
594600
files = (
601+
9BE7D4C324889F3F00DE1176 /* AttributedStringExtension.swift in Sources */,
595602
9B267B8C24406B2F002F571E /* WKInterfaceLabelExtension.swift in Sources */,
596603
9B267B77244066C1002F571E /* CGSizeExtension.swift in Sources */,
597604
9B267B78244066C1002F571E /* CGRectExtension.swift in Sources */,
@@ -601,7 +608,7 @@
601608
9B267B8B24406B2F002F571E /* WKInterfaceButtonExtension.swift in Sources */,
602609
9B267B7B244066C1002F571E /* AttributedString.swift in Sources */,
603610
9B267B7C244066C1002F571E /* Interpolation.swift in Sources */,
604-
9B267B7D244066C1002F571E /* Style.swift in Sources */,
611+
9B267B7D244066C1002F571E /* Attribute.swift in Sources */,
605612
9B8765A224850742009C51C2 /* ObjectExtension.swift in Sources */,
606613
9B267B7E244066C1002F571E /* ParagraphStyle.swift in Sources */,
607614
9B267B7F244066C1002F571E /* Attachment.swift in Sources */,
@@ -619,13 +626,14 @@
619626
9B267BE724408357002F571E /* NSShadowExtension.swift in Sources */,
620627
9B267BE824408357002F571E /* UIButtonExtension.swift in Sources */,
621628
9B8765A324850742009C51C2 /* ObjectExtension.swift in Sources */,
629+
9BE7D4C424889F4000DE1176 /* AttributedStringExtension.swift in Sources */,
622630
9B267BB32440811F002F571E /* CGSizeExtension.swift in Sources */,
623631
9B267BB42440811F002F571E /* CGRectExtension.swift in Sources */,
624632
9B267BB52440811F002F571E /* CGPointExtension.swift in Sources */,
625633
9B267BB62440811F002F571E /* Extension.swift in Sources */,
626634
9B267BB72440811F002F571E /* AttributedString.swift in Sources */,
627635
9B267BB82440811F002F571E /* Interpolation.swift in Sources */,
628-
9B267BB92440811F002F571E /* Style.swift in Sources */,
636+
9B267BB92440811F002F571E /* Attribute.swift in Sources */,
629637
9B267BBA2440811F002F571E /* ParagraphStyle.swift in Sources */,
630638
9B267BBB2440811F002F571E /* Attachment.swift in Sources */,
631639
);
@@ -647,12 +655,13 @@
647655
9B34BD65243DFACE00932E6C /* NSShadowExtension.swift in Sources */,
648656
9B34BD40243DBEA900932E6C /* CGSizeExtension.swift in Sources */,
649657
9B34BD41243DBEA900932E6C /* CGRectExtension.swift in Sources */,
658+
9BE7D4C224889F3E00DE1176 /* AttributedStringExtension.swift in Sources */,
650659
9B34BD42243DBEA900932E6C /* CGPointExtension.swift in Sources */,
651660
9B34BD43243DBEA900932E6C /* Extension.swift in Sources */,
652661
9B34BD44243DBEA900932E6C /* AttributedString.swift in Sources */,
653662
9B34BD45243DBEA900932E6C /* Interpolation.swift in Sources */,
654663
9B8765A124850742009C51C2 /* ObjectExtension.swift in Sources */,
655-
9B34BD46243DBEA900932E6C /* Style.swift in Sources */,
664+
9B34BD46243DBEA900932E6C /* Attribute.swift in Sources */,
656665
9B34BD47243DBEA900932E6C /* ParagraphStyle.swift in Sources */,
657666
9B34BD48243DBEA900932E6C /* Attachment.swift in Sources */,
658667
);
@@ -668,14 +677,15 @@
668677
9B6E89A223826D8E009EBEBE /* Interpolation.swift in Sources */,
669678
9B6E89B3238276B0009EBEBE /* CGPointExtension.swift in Sources */,
670679
9B8765A024850742009C51C2 /* ObjectExtension.swift in Sources */,
680+
9BE7D4C12488984400DE1176 /* AttributedStringExtension.swift in Sources */,
671681
9B6E89DF23828F7C009EBEBE /* NSShadowExtension.swift in Sources */,
672682
9B6E89AF238275D2009EBEBE /* CGSizeExtension.swift in Sources */,
673683
9B6E89B12382766F009EBEBE /* CGRectExtension.swift in Sources */,
674684
9B6E89A8238273E4009EBEBE /* UITextViewExtension.swift in Sources */,
675685
9B0A2A3823851EB6003D8A55 /* Extension.swift in Sources */,
676686
9B6E89AC238274CB009EBEBE /* UILabelExtension.swift in Sources */,
677687
9B0A2A3A238524E1003D8A55 /* UIButtonExtension.swift in Sources */,
678-
9B6E89E12382C301009EBEBE /* Style.swift in Sources */,
688+
9B6E89E12382C301009EBEBE /* Attribute.swift in Sources */,
679689
9B6E899E23823FFD009EBEBE /* AttributedString.swift in Sources */,
680690
);
681691
runOnlyForDeploymentPostprocessing = 0;

Demo-TV/Demo-TV.xcodeproj/project.pbxproj

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
archiveVersion = 1;
44
classes = {
55
};
6-
objectVersion = 50;
6+
objectVersion = 53;
77
objects = {
88

99
/* Begin PBXBuildFile section */
@@ -145,7 +145,7 @@
145145
};
146146
};
147147
buildConfigurationList = 9B267BC524408230002F571E /* Build configuration list for PBXProject "Demo-TV" */;
148-
compatibilityVersion = "Xcode 9.3";
148+
compatibilityVersion = "Xcode 11.4";
149149
developmentRegion = en;
150150
hasScannedForEncodings = 0;
151151
knownRegions = (
@@ -339,7 +339,7 @@
339339
PRODUCT_NAME = "$(TARGET_NAME)";
340340
SWIFT_VERSION = 5.0;
341341
TARGETED_DEVICE_FAMILY = 3;
342-
TVOS_DEPLOYMENT_TARGET = 10.0;
342+
TVOS_DEPLOYMENT_TARGET = 11.0;
343343
};
344344
name = Debug;
345345
};
@@ -358,7 +358,7 @@
358358
PRODUCT_NAME = "$(TARGET_NAME)";
359359
SWIFT_VERSION = 5.0;
360360
TARGETED_DEVICE_FAMILY = 3;
361-
TVOS_DEPLOYMENT_TARGET = 10.0;
361+
TVOS_DEPLOYMENT_TARGET = 11.0;
362362
};
363363
name = Release;
364364
};

Demo-TV/Demo-TV/AllDetailViewController.swift

Lines changed: 57 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -7,29 +7,74 @@
77
//
88

99
import UIKit
10+
import AttributedString
1011

1112
class AllDetailViewController: UIViewController {
1213

1314
typealias Item = AllTableViewController.Item
1415

15-
@IBOutlet weak var content: UITextView!
16-
@IBOutlet weak var code: UITextView!
16+
@IBOutlet weak var tableView: UITableView!
17+
18+
private var list: [NSAttributedString] = []
1719

1820
override func viewDidLoad() {
1921
super.viewDidLoad()
2022

21-
// 解决tvOS UITextView 无法滚动问题
22-
content.isSelectable = true
23-
content.isUserInteractionEnabled = true
24-
content.panGestureRecognizer.allowedTouchTypes = [.init(value: UITouch.TouchType.indirect.rawValue)]
25-
26-
code.isSelectable = true
27-
code.isUserInteractionEnabled = true
28-
code.panGestureRecognizer.allowedTouchTypes = [.init(value: UITouch.TouchType.indirect.rawValue)]
2923
}
3024

3125
func set(item: Item) {
32-
content.attributed.text = "\(wrap: .embedding(item.content), .font(.systemFont(ofSize: 38)))"
33-
code.text = item.code
26+
list = [
27+
AttributedString(item.content, .font(.systemFont(ofSize: 38))).value,
28+
.init(string: item.code)
29+
]
30+
31+
tableView.reloadData()
32+
}
33+
}
34+
35+
extension AllDetailViewController: UITableViewDelegate {
36+
37+
func numberOfSections(in tableView: UITableView) -> Int {
38+
return 1
39+
}
40+
}
41+
42+
extension AllDetailViewController: UITableViewDataSource {
43+
44+
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
45+
return list.count
46+
}
47+
48+
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
49+
let cell = tableView.dequeueReusableCell(
50+
withIdentifier: "DetailCell",
51+
for: indexPath
52+
) as! DetailCell
53+
cell.set(list[indexPath.row])
54+
cell.set(indexPath.row)
55+
return cell
56+
}
57+
}
58+
59+
class DetailCell: UITableViewCell {
60+
61+
@IBOutlet weak var label: UILabel!
62+
63+
func set(_ text: NSAttributedString) {
64+
label.attributedText = text
65+
}
66+
67+
func set(_ index: Int) {
68+
switch index {
69+
case 0:
70+
label.textColor = #colorLiteral(red: 0, green: 0, blue: 0, alpha: 1)
71+
label.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
72+
73+
case 1:
74+
label.textColor = #colorLiteral(red: 1.0, green: 1.0, blue: 1.0, alpha: 1.0)
75+
label.backgroundColor = #colorLiteral(red: 0.3333333433, green: 0.3333333433, blue: 0.3333333433, alpha: 1)
76+
77+
default: break
78+
}
3479
}
3580
}

0 commit comments

Comments
 (0)