18 |
19 |
20 |
--------------------------------------------------------------------------------
/RevealingTableViewCell/TODOs:
--------------------------------------------------------------------------------
1 | INVESTIGATE: I tried using `UISpringTimingParameters` with initialVelocity vector causes the view to get offset slighly in the Y axis, even if we set the vector to have y=0.
2 | NOTE: We need to completely remove and re-add constraints during dragging and animation. Setting isActive does not work.
3 |
4 | TODO: If while dragging the orientation changes, react somehow?
5 | TODO: If the spring is animating and is outside of the allowed ranges (overshooting), when we start dragging, the view will jump.
6 | TODO: Expose the draggingResitance constants as a public API
7 |
--------------------------------------------------------------------------------
/RevealingTableViewCell/UITableView+RevealingExtensions.swift:
--------------------------------------------------------------------------------
1 | //
2 | // UITableView+RevealingExtensions.swift
3 | // RevealingTableViewCell
4 | //
5 | // Created by sovata on 08/04/2017.
6 | // Copyright © 2017 Nikolay Suvandzhiev. All rights reserved.
7 | //
8 |
9 | import Foundation
10 | import UIKit
11 |
12 |
13 | /// Extension for easy closing of RevealingTableViewCells in a tableView
14 | public extension UITableView
15 | {
16 | /**
17 | Closes all the cells (unless you specify a cell to leave open).
18 |
19 | - Parameters:
20 | - cellThatShouldNotBeClosed: The cell to leave open. (optional). Just don't pass anything (or pass `nil`) if you want all the cells to close.
21 | */
22 | func closeAllCells(exceptThisOne cellThatShouldNotBeClosed: RevealingTableViewCell? = nil)
23 | {
24 | for visibleCell in self.visibleCells
25 | {
26 | if let revealingTableViewCell = visibleCell as? RevealingTableViewCell
27 | {
28 | if let cellThatShouldNotBeClosed = cellThatShouldNotBeClosed
29 | {
30 | if visibleCell != cellThatShouldNotBeClosed
31 | {
32 | revealingTableViewCell.setRevealingState(.closed, animated: true)
33 | }
34 | }
35 | else
36 | {
37 | revealingTableViewCell.setRevealingState(.closed, animated: true)
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Screenshots/IBOutlets.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/Screenshots/IBOutlets.png
--------------------------------------------------------------------------------
/Screenshots/RevealingCellScreenRecording10s.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/Screenshots/RevealingCellScreenRecording10s.gif
--------------------------------------------------------------------------------
/Screenshots/ViewStructure.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/Screenshots/ViewStructure.png
--------------------------------------------------------------------------------
/Screenshots/app_icon_pivotlist.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/Screenshots/app_icon_pivotlist.png
--------------------------------------------------------------------------------
/docs/Classes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Classes Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Classes Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Classes
63 | The following classes are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
82 |
A UITableViewCell
subclass that can be swiped to reveal content udnerneath it’s main view
83 |
84 |
See more
85 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
open class RevealingTableViewCell : UITableViewCell
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/Classes/RevealingTableViewCell/RevealingState.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingState Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | RevealingState Enumeration Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | RevealingState
63 |
64 |
65 |
public enum RevealingState
66 |
67 |
68 |
69 | Describes the state of a RevealingTableViewCell
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | closed
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
The default state (none of the views underneath are revealed)
89 |
90 |
91 |
92 |
Declaration
93 |
94 |
Swift
95 |
case closed
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | openLeft
108 |
109 |
110 |
111 |
112 |
113 |
114 |
118 |
119 |
Declaration
120 |
121 |
Swift
122 |
case openLeft
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | openRight
135 |
136 |
137 |
138 |
139 |
140 |
141 |
145 |
146 |
Declaration
147 |
148 |
Swift
149 |
case openRight
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
164 |
165 |
166 |
167 |
168 |
169 |
--------------------------------------------------------------------------------
/docs/Extensions.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Extensions Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Extensions Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Extensions
63 | The following extensions are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
82 |
Extension for easy closing of RevealingTableViewCells in a tableView
83 |
84 |
See more
85 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
public extension UITableView
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/Extensions/UITableView.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UITableView Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | UITableView Extension Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | UITableView
63 |
64 |
65 |
public extension UITableView
66 |
67 |
68 |
69 | Extension for easy closing of RevealingTableViewCells in a tableView
70 |
71 |
72 |
73 |
74 |
75 |
76 |
83 |
84 |
85 |
86 |
87 |
88 |
Closes all the cells (unless you specify a cell to leave open).
89 |
90 |
91 |
92 |
Declaration
93 |
94 |
Swift
95 |
func closeAllCells ( exceptThisOne cellThatShouldNotBeClosed : RevealingTableViewCell ? = nil )
96 |
97 |
98 |
99 |
100 |
Parameters
101 |
102 |
103 |
104 |
105 |
106 | cellThatShouldNotBeClosed
107 |
108 |
109 |
110 |
111 |
The cell to leave open. (optional). Just don’t pass anything (or pass nil
) if you want all the cells to close.
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/docs/Protocols.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Protocols Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Protocols Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Protocols
63 | The following protocols are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
public protocol RevealingTableViewCellDelegate : AnyObject
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/Protocols/RevealingTableViewCellDelegate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingTableViewCellDelegate Protocol Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | RevealingTableViewCellDelegate Protocol Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | RevealingTableViewCellDelegate
63 |
64 |
65 |
public protocol RevealingTableViewCellDelegate : AnyObject
66 |
67 |
68 |
69 | Delegate for the RevealingTableViewCell
70 |
71 |
72 |
73 |
74 |
75 |
76 |
86 |
87 |
88 |
89 |
90 |
91 |
This is called when the state changes and if there is an animation, it is called at the start of the animation.
92 |
93 |
94 | Default Implementation
95 |
96 |
97 |
98 |
99 |
Declaration
100 |
105 |
106 |
107 |
Parameters
108 |
109 |
110 |
111 |
112 |
113 | cell
114 |
115 |
116 |
117 |
118 |
The cell in question
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
139 |
140 |
141 |
142 |
143 |
144 |
Called when the user sarts horizontally sliding the cell.
145 |
146 |
147 | Default Implementation
148 |
149 |
150 |
151 |
152 |
Declaration
153 |
158 |
159 |
160 |
Parameters
161 |
162 |
163 |
164 |
165 |
166 | cell
167 |
168 |
169 |
170 |
171 |
The cell in question
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
192 |
193 |
194 |
195 |
196 |
197 |
Called at the end of an animation.
198 |
199 |
200 | Default Implementation
201 |
202 |
203 |
204 |
205 |
Declaration
206 |
211 |
212 |
213 |
Parameters
214 |
215 |
216 |
217 |
218 |
219 | cell
220 |
221 |
222 |
223 |
224 |
The cell in question
225 |
226 |
227 |
228 |
229 |
230 |
231 | revealingState
232 |
233 |
234 |
235 |
236 |
The RevealingState
at which the animation ended
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
254 |
255 |
256 |
257 |
258 |
259 |
--------------------------------------------------------------------------------
/docs/badge.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | documentation
17 |
18 |
19 | documentation
20 |
21 |
22 | 100%
23 |
24 |
25 | 100%
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none;
143 | white-space: nowrap; }
144 | .nav-group-task a {
145 | color: #888; }
146 |
147 | .main-content {
148 | background-color: #fff;
149 | border: 1px solid #e2e2e2;
150 | margin-left: 246px;
151 | position: absolute;
152 | overflow: hidden;
153 | padding-bottom: 20px;
154 | top: 70px;
155 | width: 734px; }
156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
157 | margin-bottom: 1em; }
158 | .main-content p {
159 | line-height: 1.8em; }
160 | .main-content section .section:first-child {
161 | margin-top: 0;
162 | padding-top: 0; }
163 | .main-content section .task-group-section .task-group:first-of-type {
164 | padding-top: 10px; }
165 | .main-content section .task-group-section .task-group:first-of-type .section-name {
166 | padding-top: 15px; }
167 | .main-content section .heading:before {
168 | content: "";
169 | display: block;
170 | padding-top: 70px;
171 | margin: -70px 0 0; }
172 |
173 | .section {
174 | padding: 0 25px; }
175 |
176 | .highlight {
177 | background-color: #eee;
178 | padding: 10px 12px;
179 | border: 1px solid #e2e2e2;
180 | border-radius: 4px;
181 | overflow-x: auto; }
182 |
183 | .declaration .highlight {
184 | overflow-x: initial;
185 | padding: 0 40px 40px 0;
186 | margin-bottom: -25px;
187 | background-color: transparent;
188 | border: none; }
189 |
190 | .section-name {
191 | margin: 0;
192 | margin-left: 18px; }
193 |
194 | .task-group-section {
195 | padding-left: 6px;
196 | border-top: 1px solid #e2e2e2; }
197 |
198 | .task-group {
199 | padding-top: 0px; }
200 |
201 | .task-name-container a[name]:before {
202 | content: "";
203 | display: block;
204 | padding-top: 70px;
205 | margin: -70px 0 0; }
206 |
207 | .item {
208 | padding-top: 8px;
209 | width: 100%;
210 | list-style-type: none; }
211 | .item a[name]:before {
212 | content: "";
213 | display: block;
214 | padding-top: 70px;
215 | margin: -70px 0 0; }
216 | .item code {
217 | background-color: transparent;
218 | padding: 0; }
219 | .item .token, .item .direct-link {
220 | padding-left: 3px;
221 | margin-left: 15px;
222 | font-size: 11.9px;
223 | transition: all 300ms; }
224 | .item .token-open {
225 | margin-left: 0px; }
226 | .item .discouraged {
227 | text-decoration: line-through; }
228 | .item .declaration-note {
229 | font-size: .85em;
230 | color: gray;
231 | font-style: italic; }
232 |
233 | .pointer-container {
234 | border-bottom: 1px solid #e2e2e2;
235 | left: -23px;
236 | padding-bottom: 13px;
237 | position: relative;
238 | width: 110%; }
239 |
240 | .pointer {
241 | background: #f9f9f9;
242 | border-left: 1px solid #e2e2e2;
243 | border-top: 1px solid #e2e2e2;
244 | height: 12px;
245 | left: 21px;
246 | top: -7px;
247 | -webkit-transform: rotate(45deg);
248 | -moz-transform: rotate(45deg);
249 | -o-transform: rotate(45deg);
250 | transform: rotate(45deg);
251 | position: absolute;
252 | width: 12px; }
253 |
254 | .height-container {
255 | display: none;
256 | left: -25px;
257 | padding: 0 25px;
258 | position: relative;
259 | width: 100%;
260 | overflow: hidden; }
261 | .height-container .section {
262 | background: #f9f9f9;
263 | border-bottom: 1px solid #e2e2e2;
264 | left: -25px;
265 | position: relative;
266 | width: 100%;
267 | padding-top: 10px;
268 | padding-bottom: 5px; }
269 |
270 | .aside, .language {
271 | padding: 6px 12px;
272 | margin: 12px 0;
273 | border-left: 5px solid #dddddd;
274 | overflow-y: hidden; }
275 | .aside .aside-title, .language .aside-title {
276 | font-size: 9px;
277 | letter-spacing: 2px;
278 | text-transform: uppercase;
279 | padding-bottom: 0;
280 | margin: 0;
281 | color: #aaa;
282 | -webkit-user-select: none; }
283 | .aside p:last-child, .language p:last-child {
284 | margin-bottom: 0; }
285 |
286 | .language {
287 | border-left: 5px solid #cde9f4; }
288 | .language .aside-title {
289 | color: #4b8afb; }
290 |
291 | .aside-warning, .aside-deprecated, .aside-unavailable {
292 | border-left: 5px solid #ff6666; }
293 | .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {
294 | color: #ff0000; }
295 |
296 | .graybox {
297 | border-collapse: collapse;
298 | width: 100%; }
299 | .graybox p {
300 | margin: 0;
301 | word-break: break-word;
302 | min-width: 50px; }
303 | .graybox td {
304 | border: 1px solid #e2e2e2;
305 | padding: 5px 25px 5px 10px;
306 | vertical-align: middle; }
307 | .graybox tr td:first-of-type {
308 | text-align: right;
309 | padding: 7px;
310 | vertical-align: top;
311 | word-break: normal;
312 | width: 40px; }
313 |
314 | .slightly-smaller {
315 | font-size: 0.9em; }
316 |
317 | #footer {
318 | position: relative;
319 | top: 10px;
320 | bottom: 0px;
321 | margin-left: 25px; }
322 | #footer p {
323 | margin: 0;
324 | color: #aaa;
325 | font-size: 0.8em; }
326 |
327 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
328 | display: none; }
329 |
330 | html.dash .main-content {
331 | width: 980px;
332 | margin-left: 0;
333 | border: none;
334 | width: 100%;
335 | top: 0;
336 | padding-bottom: 0; }
337 |
338 | html.dash .height-container {
339 | display: block; }
340 |
341 | html.dash .item .token {
342 | margin-left: 0; }
343 |
344 | html.dash .content-wrapper {
345 | width: auto; }
346 |
347 | html.dash #footer {
348 | position: static; }
349 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleIdentifier
6 | com.jazzy.revealingtableviewcell
7 | CFBundleName
8 | RevealingTableViewCell
9 | DocSetPlatformFamily
10 | revealingtableviewcell
11 | isDashDocset
12 |
13 | dashIndexFilePath
14 | index.html
15 | isJavaScriptEnabled
16 |
17 | DashDocSetFamily
18 | dashtoc
19 |
20 |
21 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Classes.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Classes Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Classes Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Classes
63 | The following classes are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
82 |
A UITableViewCell
subclass that can be swiped to reveal content udnerneath it’s main view
83 |
84 |
See more
85 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
open class RevealingTableViewCell : UITableViewCell
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Classes/RevealingTableViewCell/RevealingState.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingState Enumeration Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | RevealingState Enumeration Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | RevealingState
63 |
64 |
65 |
public enum RevealingState
66 |
67 |
68 |
69 | Describes the state of a RevealingTableViewCell
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 | closed
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
The default state (none of the views underneath are revealed)
89 |
90 |
91 |
92 |
Declaration
93 |
94 |
Swift
95 |
case closed
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 | openLeft
108 |
109 |
110 |
111 |
112 |
113 |
114 |
118 |
119 |
Declaration
120 |
121 |
Swift
122 |
case openLeft
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 | openRight
135 |
136 |
137 |
138 |
139 |
140 |
141 |
145 |
146 |
Declaration
147 |
148 |
Swift
149 |
case openRight
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
164 |
165 |
166 |
167 |
168 |
169 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Extensions.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Extensions Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Extensions Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Extensions
63 | The following extensions are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
82 |
Extension for easy closing of RevealingTableViewCells in a tableView
83 |
84 |
See more
85 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
public extension UITableView
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Extensions/UITableView.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | UITableView Extension Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | UITableView Extension Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | UITableView
63 |
64 |
65 |
public extension UITableView
66 |
67 |
68 |
69 | Extension for easy closing of RevealingTableViewCells in a tableView
70 |
71 |
72 |
73 |
74 |
75 |
76 |
83 |
84 |
85 |
86 |
87 |
88 |
Closes all the cells (unless you specify a cell to leave open).
89 |
90 |
91 |
92 |
Declaration
93 |
94 |
Swift
95 |
func closeAllCells ( exceptThisOne cellThatShouldNotBeClosed : RevealingTableViewCell ? = nil )
96 |
97 |
98 |
99 |
100 |
Parameters
101 |
102 |
103 |
104 |
105 |
106 | cellThatShouldNotBeClosed
107 |
108 |
109 |
110 |
111 |
The cell to leave open. (optional). Just don’t pass anything (or pass nil
) if you want all the cells to close.
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Protocols.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Protocols Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | Protocols Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | Protocols
63 | The following protocols are available globally.
64 |
65 |
66 |
67 |
68 |
69 |
70 |
77 |
78 |
79 |
80 |
81 |
86 |
87 |
Declaration
88 |
89 |
Swift
90 |
public protocol RevealingTableViewCellDelegate : AnyObject
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/Protocols/RevealingTableViewCellDelegate.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingTableViewCellDelegate Protocol Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
20 |
21 |
22 | RevealingTableViewCell Reference
23 |
24 | RevealingTableViewCellDelegate Protocol Reference
25 |
26 |
27 |
28 |
59 |
60 |
61 |
62 | RevealingTableViewCellDelegate
63 |
64 |
65 |
public protocol RevealingTableViewCellDelegate : AnyObject
66 |
67 |
68 |
69 | Delegate for the RevealingTableViewCell
70 |
71 |
72 |
73 |
74 |
75 |
76 |
86 |
87 |
88 |
89 |
90 |
91 |
This is called when the state changes and if there is an animation, it is called at the start of the animation.
92 |
93 |
94 | Default Implementation
95 |
96 |
97 |
98 |
99 |
Declaration
100 |
105 |
106 |
107 |
Parameters
108 |
109 |
110 |
111 |
112 |
113 | cell
114 |
115 |
116 |
117 |
118 |
The cell in question
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
139 |
140 |
141 |
142 |
143 |
144 |
Called when the user sarts horizontally sliding the cell.
145 |
146 |
147 | Default Implementation
148 |
149 |
150 |
151 |
152 |
Declaration
153 |
158 |
159 |
160 |
Parameters
161 |
162 |
163 |
164 |
165 |
166 | cell
167 |
168 |
169 |
170 |
171 |
The cell in question
172 |
173 |
174 |
175 |
176 |
177 |
178 |
179 |
180 |
181 |
182 |
192 |
193 |
194 |
195 |
196 |
197 |
Called at the end of an animation.
198 |
199 |
200 | Default Implementation
201 |
202 |
203 |
204 |
205 |
Declaration
206 |
211 |
212 |
213 |
Parameters
214 |
215 |
216 |
217 |
218 |
219 | cell
220 |
221 |
222 |
223 |
224 |
The cell in question
225 |
226 |
227 |
228 |
229 |
230 |
231 | revealingState
232 |
233 |
234 |
235 |
236 |
The RevealingState
at which the animation ended
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
247 |
248 |
249 |
250 |
254 |
255 |
256 |
257 |
258 |
259 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/badge.svg:
--------------------------------------------------------------------------------
1 | documentation documentation 100% 100%
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/css/highlight.css:
--------------------------------------------------------------------------------
1 | /* Credit to https://gist.github.com/wataru420/2048287 */
2 | .highlight {
3 | /* Comment */
4 | /* Error */
5 | /* Keyword */
6 | /* Operator */
7 | /* Comment.Multiline */
8 | /* Comment.Preproc */
9 | /* Comment.Single */
10 | /* Comment.Special */
11 | /* Generic.Deleted */
12 | /* Generic.Deleted.Specific */
13 | /* Generic.Emph */
14 | /* Generic.Error */
15 | /* Generic.Heading */
16 | /* Generic.Inserted */
17 | /* Generic.Inserted.Specific */
18 | /* Generic.Output */
19 | /* Generic.Prompt */
20 | /* Generic.Strong */
21 | /* Generic.Subheading */
22 | /* Generic.Traceback */
23 | /* Keyword.Constant */
24 | /* Keyword.Declaration */
25 | /* Keyword.Pseudo */
26 | /* Keyword.Reserved */
27 | /* Keyword.Type */
28 | /* Literal.Number */
29 | /* Literal.String */
30 | /* Name.Attribute */
31 | /* Name.Builtin */
32 | /* Name.Class */
33 | /* Name.Constant */
34 | /* Name.Entity */
35 | /* Name.Exception */
36 | /* Name.Function */
37 | /* Name.Namespace */
38 | /* Name.Tag */
39 | /* Name.Variable */
40 | /* Operator.Word */
41 | /* Text.Whitespace */
42 | /* Literal.Number.Float */
43 | /* Literal.Number.Hex */
44 | /* Literal.Number.Integer */
45 | /* Literal.Number.Oct */
46 | /* Literal.String.Backtick */
47 | /* Literal.String.Char */
48 | /* Literal.String.Doc */
49 | /* Literal.String.Double */
50 | /* Literal.String.Escape */
51 | /* Literal.String.Heredoc */
52 | /* Literal.String.Interpol */
53 | /* Literal.String.Other */
54 | /* Literal.String.Regex */
55 | /* Literal.String.Single */
56 | /* Literal.String.Symbol */
57 | /* Name.Builtin.Pseudo */
58 | /* Name.Variable.Class */
59 | /* Name.Variable.Global */
60 | /* Name.Variable.Instance */
61 | /* Literal.Number.Integer.Long */ }
62 | .highlight .c {
63 | color: #999988;
64 | font-style: italic; }
65 | .highlight .err {
66 | color: #a61717;
67 | background-color: #e3d2d2; }
68 | .highlight .k {
69 | color: #000000;
70 | font-weight: bold; }
71 | .highlight .o {
72 | color: #000000;
73 | font-weight: bold; }
74 | .highlight .cm {
75 | color: #999988;
76 | font-style: italic; }
77 | .highlight .cp {
78 | color: #999999;
79 | font-weight: bold; }
80 | .highlight .c1 {
81 | color: #999988;
82 | font-style: italic; }
83 | .highlight .cs {
84 | color: #999999;
85 | font-weight: bold;
86 | font-style: italic; }
87 | .highlight .gd {
88 | color: #000000;
89 | background-color: #ffdddd; }
90 | .highlight .gd .x {
91 | color: #000000;
92 | background-color: #ffaaaa; }
93 | .highlight .ge {
94 | color: #000000;
95 | font-style: italic; }
96 | .highlight .gr {
97 | color: #aa0000; }
98 | .highlight .gh {
99 | color: #999999; }
100 | .highlight .gi {
101 | color: #000000;
102 | background-color: #ddffdd; }
103 | .highlight .gi .x {
104 | color: #000000;
105 | background-color: #aaffaa; }
106 | .highlight .go {
107 | color: #888888; }
108 | .highlight .gp {
109 | color: #555555; }
110 | .highlight .gs {
111 | font-weight: bold; }
112 | .highlight .gu {
113 | color: #aaaaaa; }
114 | .highlight .gt {
115 | color: #aa0000; }
116 | .highlight .kc {
117 | color: #000000;
118 | font-weight: bold; }
119 | .highlight .kd {
120 | color: #000000;
121 | font-weight: bold; }
122 | .highlight .kp {
123 | color: #000000;
124 | font-weight: bold; }
125 | .highlight .kr {
126 | color: #000000;
127 | font-weight: bold; }
128 | .highlight .kt {
129 | color: #445588; }
130 | .highlight .m {
131 | color: #009999; }
132 | .highlight .s {
133 | color: #d14; }
134 | .highlight .na {
135 | color: #008080; }
136 | .highlight .nb {
137 | color: #0086B3; }
138 | .highlight .nc {
139 | color: #445588;
140 | font-weight: bold; }
141 | .highlight .no {
142 | color: #008080; }
143 | .highlight .ni {
144 | color: #800080; }
145 | .highlight .ne {
146 | color: #990000;
147 | font-weight: bold; }
148 | .highlight .nf {
149 | color: #990000; }
150 | .highlight .nn {
151 | color: #555555; }
152 | .highlight .nt {
153 | color: #000080; }
154 | .highlight .nv {
155 | color: #008080; }
156 | .highlight .ow {
157 | color: #000000;
158 | font-weight: bold; }
159 | .highlight .w {
160 | color: #bbbbbb; }
161 | .highlight .mf {
162 | color: #009999; }
163 | .highlight .mh {
164 | color: #009999; }
165 | .highlight .mi {
166 | color: #009999; }
167 | .highlight .mo {
168 | color: #009999; }
169 | .highlight .sb {
170 | color: #d14; }
171 | .highlight .sc {
172 | color: #d14; }
173 | .highlight .sd {
174 | color: #d14; }
175 | .highlight .s2 {
176 | color: #d14; }
177 | .highlight .se {
178 | color: #d14; }
179 | .highlight .sh {
180 | color: #d14; }
181 | .highlight .si {
182 | color: #d14; }
183 | .highlight .sx {
184 | color: #d14; }
185 | .highlight .sr {
186 | color: #009926; }
187 | .highlight .s1 {
188 | color: #d14; }
189 | .highlight .ss {
190 | color: #990073; }
191 | .highlight .bp {
192 | color: #999999; }
193 | .highlight .vc {
194 | color: #008080; }
195 | .highlight .vg {
196 | color: #008080; }
197 | .highlight .vi {
198 | color: #008080; }
199 | .highlight .il {
200 | color: #009999; }
201 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/css/jazzy.css:
--------------------------------------------------------------------------------
1 | html, body, div, span, h1, h3, h4, p, a, code, em, img, ul, li, table, tbody, tr, td {
2 | background: transparent;
3 | border: 0;
4 | margin: 0;
5 | outline: 0;
6 | padding: 0;
7 | vertical-align: baseline; }
8 |
9 | body {
10 | background-color: #f2f2f2;
11 | font-family: Helvetica, freesans, Arial, sans-serif;
12 | font-size: 14px;
13 | -webkit-font-smoothing: subpixel-antialiased;
14 | word-wrap: break-word; }
15 |
16 | h1, h2, h3 {
17 | margin-top: 0.8em;
18 | margin-bottom: 0.3em;
19 | font-weight: 100;
20 | color: black; }
21 |
22 | h1 {
23 | font-size: 2.5em; }
24 |
25 | h2 {
26 | font-size: 2em;
27 | border-bottom: 1px solid #e2e2e2; }
28 |
29 | h4 {
30 | font-size: 13px;
31 | line-height: 1.5;
32 | margin-top: 21px; }
33 |
34 | h5 {
35 | font-size: 1.1em; }
36 |
37 | h6 {
38 | font-size: 1.1em;
39 | color: #777; }
40 |
41 | .section-name {
42 | color: gray;
43 | display: block;
44 | font-family: Helvetica;
45 | font-size: 22px;
46 | font-weight: 100;
47 | margin-bottom: 15px; }
48 |
49 | pre, code {
50 | font: 0.95em Menlo, monospace;
51 | color: #777;
52 | word-wrap: normal; }
53 |
54 | p code, li code {
55 | background-color: #eee;
56 | padding: 2px 4px;
57 | border-radius: 4px; }
58 |
59 | a {
60 | color: #0088cc;
61 | text-decoration: none; }
62 |
63 | ul {
64 | padding-left: 15px; }
65 |
66 | li {
67 | line-height: 1.8em; }
68 |
69 | img {
70 | max-width: 100%; }
71 |
72 | blockquote {
73 | margin-left: 0;
74 | padding: 0 10px;
75 | border-left: 4px solid #ccc; }
76 |
77 | .content-wrapper {
78 | margin: 0 auto;
79 | width: 980px; }
80 |
81 | header {
82 | font-size: 0.85em;
83 | line-height: 26px;
84 | background-color: #414141;
85 | position: fixed;
86 | width: 100%;
87 | z-index: 1; }
88 | header img {
89 | padding-right: 6px;
90 | vertical-align: -4px;
91 | height: 16px; }
92 | header a {
93 | color: #fff; }
94 | header p {
95 | float: left;
96 | color: #999; }
97 | header .header-right {
98 | float: right;
99 | margin-left: 16px; }
100 |
101 | #breadcrumbs {
102 | background-color: #f2f2f2;
103 | height: 27px;
104 | padding-top: 17px;
105 | position: fixed;
106 | width: 100%;
107 | z-index: 1;
108 | margin-top: 26px; }
109 | #breadcrumbs #carat {
110 | height: 10px;
111 | margin: 0 5px; }
112 |
113 | .sidebar {
114 | background-color: #f9f9f9;
115 | border: 1px solid #e2e2e2;
116 | overflow-y: auto;
117 | overflow-x: hidden;
118 | position: fixed;
119 | top: 70px;
120 | bottom: 0;
121 | width: 230px;
122 | word-wrap: normal; }
123 |
124 | .nav-groups {
125 | list-style-type: none;
126 | background: #fff;
127 | padding-left: 0; }
128 |
129 | .nav-group-name {
130 | border-bottom: 1px solid #e2e2e2;
131 | font-size: 1.1em;
132 | font-weight: 100;
133 | padding: 15px 0 15px 20px; }
134 | .nav-group-name > a {
135 | color: #333; }
136 |
137 | .nav-group-tasks {
138 | margin-top: 5px; }
139 |
140 | .nav-group-task {
141 | font-size: 0.9em;
142 | list-style-type: none;
143 | white-space: nowrap; }
144 | .nav-group-task a {
145 | color: #888; }
146 |
147 | .main-content {
148 | background-color: #fff;
149 | border: 1px solid #e2e2e2;
150 | margin-left: 246px;
151 | position: absolute;
152 | overflow: hidden;
153 | padding-bottom: 20px;
154 | top: 70px;
155 | width: 734px; }
156 | .main-content p, .main-content a, .main-content code, .main-content em, .main-content ul, .main-content table, .main-content blockquote {
157 | margin-bottom: 1em; }
158 | .main-content p {
159 | line-height: 1.8em; }
160 | .main-content section .section:first-child {
161 | margin-top: 0;
162 | padding-top: 0; }
163 | .main-content section .task-group-section .task-group:first-of-type {
164 | padding-top: 10px; }
165 | .main-content section .task-group-section .task-group:first-of-type .section-name {
166 | padding-top: 15px; }
167 | .main-content section .heading:before {
168 | content: "";
169 | display: block;
170 | padding-top: 70px;
171 | margin: -70px 0 0; }
172 |
173 | .section {
174 | padding: 0 25px; }
175 |
176 | .highlight {
177 | background-color: #eee;
178 | padding: 10px 12px;
179 | border: 1px solid #e2e2e2;
180 | border-radius: 4px;
181 | overflow-x: auto; }
182 |
183 | .declaration .highlight {
184 | overflow-x: initial;
185 | padding: 0 40px 40px 0;
186 | margin-bottom: -25px;
187 | background-color: transparent;
188 | border: none; }
189 |
190 | .section-name {
191 | margin: 0;
192 | margin-left: 18px; }
193 |
194 | .task-group-section {
195 | padding-left: 6px;
196 | border-top: 1px solid #e2e2e2; }
197 |
198 | .task-group {
199 | padding-top: 0px; }
200 |
201 | .task-name-container a[name]:before {
202 | content: "";
203 | display: block;
204 | padding-top: 70px;
205 | margin: -70px 0 0; }
206 |
207 | .item {
208 | padding-top: 8px;
209 | width: 100%;
210 | list-style-type: none; }
211 | .item a[name]:before {
212 | content: "";
213 | display: block;
214 | padding-top: 70px;
215 | margin: -70px 0 0; }
216 | .item code {
217 | background-color: transparent;
218 | padding: 0; }
219 | .item .token, .item .direct-link {
220 | padding-left: 3px;
221 | margin-left: 15px;
222 | font-size: 11.9px;
223 | transition: all 300ms; }
224 | .item .token-open {
225 | margin-left: 0px; }
226 | .item .discouraged {
227 | text-decoration: line-through; }
228 | .item .declaration-note {
229 | font-size: .85em;
230 | color: gray;
231 | font-style: italic; }
232 |
233 | .pointer-container {
234 | border-bottom: 1px solid #e2e2e2;
235 | left: -23px;
236 | padding-bottom: 13px;
237 | position: relative;
238 | width: 110%; }
239 |
240 | .pointer {
241 | background: #f9f9f9;
242 | border-left: 1px solid #e2e2e2;
243 | border-top: 1px solid #e2e2e2;
244 | height: 12px;
245 | left: 21px;
246 | top: -7px;
247 | -webkit-transform: rotate(45deg);
248 | -moz-transform: rotate(45deg);
249 | -o-transform: rotate(45deg);
250 | transform: rotate(45deg);
251 | position: absolute;
252 | width: 12px; }
253 |
254 | .height-container {
255 | display: none;
256 | left: -25px;
257 | padding: 0 25px;
258 | position: relative;
259 | width: 100%;
260 | overflow: hidden; }
261 | .height-container .section {
262 | background: #f9f9f9;
263 | border-bottom: 1px solid #e2e2e2;
264 | left: -25px;
265 | position: relative;
266 | width: 100%;
267 | padding-top: 10px;
268 | padding-bottom: 5px; }
269 |
270 | .aside, .language {
271 | padding: 6px 12px;
272 | margin: 12px 0;
273 | border-left: 5px solid #dddddd;
274 | overflow-y: hidden; }
275 | .aside .aside-title, .language .aside-title {
276 | font-size: 9px;
277 | letter-spacing: 2px;
278 | text-transform: uppercase;
279 | padding-bottom: 0;
280 | margin: 0;
281 | color: #aaa;
282 | -webkit-user-select: none; }
283 | .aside p:last-child, .language p:last-child {
284 | margin-bottom: 0; }
285 |
286 | .language {
287 | border-left: 5px solid #cde9f4; }
288 | .language .aside-title {
289 | color: #4b8afb; }
290 |
291 | .aside-warning, .aside-deprecated, .aside-unavailable {
292 | border-left: 5px solid #ff6666; }
293 | .aside-warning .aside-title, .aside-deprecated .aside-title, .aside-unavailable .aside-title {
294 | color: #ff0000; }
295 |
296 | .graybox {
297 | border-collapse: collapse;
298 | width: 100%; }
299 | .graybox p {
300 | margin: 0;
301 | word-break: break-word;
302 | min-width: 50px; }
303 | .graybox td {
304 | border: 1px solid #e2e2e2;
305 | padding: 5px 25px 5px 10px;
306 | vertical-align: middle; }
307 | .graybox tr td:first-of-type {
308 | text-align: right;
309 | padding: 7px;
310 | vertical-align: top;
311 | word-break: normal;
312 | width: 40px; }
313 |
314 | .slightly-smaller {
315 | font-size: 0.9em; }
316 |
317 | #footer {
318 | position: relative;
319 | top: 10px;
320 | bottom: 0px;
321 | margin-left: 25px; }
322 | #footer p {
323 | margin: 0;
324 | color: #aaa;
325 | font-size: 0.8em; }
326 |
327 | html.dash header, html.dash #breadcrumbs, html.dash .sidebar {
328 | display: none; }
329 |
330 | html.dash .main-content {
331 | width: 980px;
332 | margin-left: 0;
333 | border: none;
334 | width: 100%;
335 | top: 0;
336 | padding-bottom: 0; }
337 |
338 | html.dash .height-container {
339 | display: block; }
340 |
341 | html.dash .item .token {
342 | margin-left: 0; }
343 |
344 | html.dash .content-wrapper {
345 | width: auto; }
346 |
347 | html.dash #footer {
348 | position: static; }
349 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/carat.png
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/dash.png
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/img/gh.png
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingTableViewCell Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | RevealingTableViewCell Reference
22 |
23 | RevealingTableViewCell Reference
24 |
25 |
26 |
27 |
58 |
59 |
60 |
61 |
62 | RevealingTableViewCell
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | What is it?
72 | •
73 | Check it out
74 | •
75 | Installation
76 | •
77 | Usage
78 | •
79 | Documentation
80 |
81 | What is it?
82 |
83 | RevealingTableViewCell
is a UITableViewCell
that can be swiped to reveal content underneath its main view.
84 |
85 |
86 | Zero-code setup: RevealingTableViewCell
can be set up through Interface Builder, with no code changes.
87 | ‘Bring your own views’ - Note that RevealingTableViewCell
does not provide anything other than the sliding view - it’s up to you to set up any views that need be revealed, e.g. buttons etc.)
88 |
89 |
90 |
91 |
92 |
93 | Check it out
94 | CocoaPods
95 | pod try RevealingTableViewCell
96 |
97 |
98 | (this command clones the example project in a temporary folder and opens it in Xcode)
99 | Directly from the repo
100 |
101 | Clone or download this repository and then open Example/RevealingTableViewCellExample.xcodeproj
.
102 | Demo video
103 |
104 |
107 |
108 | (opens in YouTube)
109 | Installation
110 |
111 | Requires: iOS 10 +
112 |
113 | pod 'RevealingTableViewCell'
114 |
115 |
116 | github "sovata8/RevealingTableViewCell"
117 |
118 | Usage
119 |
120 | No code changes required, everything is done in Interface Builder.
121 | Note that this framework does not provide anything other than the sliding view - it’s up to you to set up any views that need be revealed (e.g. buttons, additional information etc.).
122 |
123 | These screenshots show how to set up your views and IBOutlets:
124 |
125 |
126 |
127 |
128 | Step 1
129 |
130 | Use RevealingTableViewCell
(or your subclass of it) as a custom class for your tableview cell in Interface Builder.
131 | Step 2
132 |
133 | Inside the cell’s default contentView
, put a subview and connect it to the the IBOutlet
uiView_mainContent
. This will be the view that slides sideways to reveal some content underneath. Using AutoLayout, pin this uiView_mainContent
to it’s superview (the contentView
) using the following constraints:
134 |
135 | uiView_mainContent.centerX = superview.centerX
136 | uiView_mainContent.width = superview.width
137 | uiView_mainContent.height = superview.height
138 | uiView_mainContent.centerY = superview.centerY
139 |
140 | (or instead of the height
and centerY
constraints, you can use top
and bottom
constraints)
141 | Step 3
142 |
143 | Inside the cell’s default contentView
, put and connect uiView_revealedContent_left
and/or uiView_revealedContent_right
subviews. Pin them using AutoLayout to the corresponding sides of your cell. Fix their widths. Make sure they are behind the uiView_mainContent
.
144 | Step 4
145 |
146 | That’s all - run your app!
147 | Making the cells close when needed (optional)
148 |
149 | Usually, you would want cells to automatically close whenever you scroll the tableview, or when another cell is swiped sideways. To achieve this, use the provided tableview extension function closeAllCells(exceptThisOne:)
. Here is an example (from the example project):
150 | // Close all cells when the tableview starts scrolling vertically
151 | extension ViewController : UIScrollViewDelegate
152 | {
153 | func scrollViewDidScroll ( _ scrollView : UIScrollView )
154 | {
155 | self . uiTableView . closeAllCells ()
156 | }
157 | }
158 |
159 | // Close all other cells when a particular cell starts being swiped
160 | extension ViewController : RevealingTableViewCellDelegate
161 | {
162 | func didStartPanGesture ( cell : RevealingTableViewCell )
163 | {
164 | self . uiTableView . closeAllCells ( exceptThisOne : cell )
165 | }
166 | }
167 |
168 |
169 | (of course when you are creating the cell in your cellForRowAt indexPath
logic, don’t forget to set the delegate like this: cell.revealingCellDelegate = self
)
170 | Documentation
171 |
172 | Check out the auto-generated Documentation .
173 | (If you’re reading this on GitHub, and the above link opens the html source, try this )
174 | Used by
175 |
176 |
177 | PivotList
178 |
179 | Please let me know if you use RevealingTableViewCell
in your app and would like to be mentioned here. (either email me or create e new issue with the usedby label)
180 | Known limitations and considerations
181 |
182 | The way this library works requires that all the ‘hidden’ views (the ones that are behind the main view and are revealed when sliding), are in the view hierarchy of the cell at all times, even if they are never shown. This is obviously not great when performance matters.
183 | License
184 |
185 | This project is licensed under the terms of the MIT license. See the LICENSE file.
186 |
187 |
188 |
189 |
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/js/jazzy.js:
--------------------------------------------------------------------------------
1 | window.jazzy = {'docset': false}
2 | if (typeof window.dash != 'undefined') {
3 | document.documentElement.className += ' dash'
4 | window.jazzy.docset = true
5 | }
6 | if (navigator.userAgent.match(/xcode/i)) {
7 | document.documentElement.className += ' xcode'
8 | window.jazzy.docset = true
9 | }
10 |
11 | function toggleItem($link, $content) {
12 | var animationDuration = 300;
13 | $link.toggleClass('token-open');
14 | $content.slideToggle(animationDuration);
15 | }
16 |
17 | function itemLinkToContent($link) {
18 | return $link.parent().parent().next();
19 | }
20 |
21 | // On doc load + hash-change, open any targetted item
22 | function openCurrentItemIfClosed() {
23 | if (window.jazzy.docset) {
24 | return;
25 | }
26 | var $link = $(`.token[href="${location.hash}"]`);
27 | $content = itemLinkToContent($link);
28 | if ($content.is(':hidden')) {
29 | toggleItem($link, $content);
30 | }
31 | }
32 |
33 | $(openCurrentItemIfClosed);
34 | $(window).on('hashchange', openCurrentItemIfClosed);
35 |
36 | // On item link ('token') click, toggle its discussion
37 | $('.token').on('click', function(event) {
38 | if (window.jazzy.docset) {
39 | return;
40 | }
41 | var $link = $(this);
42 | toggleItem($link, itemLinkToContent($link));
43 |
44 | // Keeps the document from jumping to the hash.
45 | var href = $link.attr('href');
46 | if (history.pushState) {
47 | history.pushState({}, '', href);
48 | } else {
49 | location.hash = href;
50 | }
51 | event.preventDefault();
52 | });
53 |
54 | // Clicks on links to the current, closed, item need to open the item
55 | $("a:not('.token')").on('click', function() {
56 | if (location == this.href) {
57 | openCurrentItemIfClosed();
58 | }
59 | });
60 |
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/search.json:
--------------------------------------------------------------------------------
1 | {"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP09didChangeA5State4cellyA2AC_tF":{"name":"didChangeRevealingState(cell:)","abstract":"This is called when the state changes and if there is an animation, it is called at the start of the animation.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP18didStartPanGesture4cellyA2AC_tF":{"name":"didStartPanGesture(cell:)","abstract":"Called when the user sarts horizontally sliding the cell.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP25didFinishAnimatingInState4cell09revealingJ0yA2AC_AG0aJ0OtF":{"name":"didFinishAnimatingInState(cell:revealingState:)","abstract":"Called at the end of an animation.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html":{"name":"RevealingTableViewCellDelegate","abstract":"Delegate for the RevealingTableViewCell
"},"Extensions/UITableView.html#/s:So11UITableViewC014RevealingTableB4CellE13closeAllCells13exceptThisOneyA2CCSg_tF":{"name":"closeAllCells(exceptThisOne:)","abstract":"Closes all the cells (unless you specify a cell to leave open).
","parent_name":"UITableView"},"Extensions/UITableView.html":{"name":"UITableView","abstract":"Extension for easy closing of RevealingTableViewCells in a tableView
"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO6closedyA2DmF":{"name":"closed","abstract":"The default state (none of the views underneath are revealed)
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO8openLeftyA2DmF":{"name":"openLeft","abstract":"When uiView_revealedContent_left
is revealed
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO9openRightyA2DmF":{"name":"openRight","abstract":"When uiView_revealedContent_right
is revealed
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_revealedContent_left":{"name":"uiView_revealedContent_left","abstract":"The content to be revealed, pinned to the left of the cell’s contentView
. Optional.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_revealedContent_right":{"name":"uiView_revealedContent_right","abstract":"The content to be revealed, pinned to the right of the cell’s contentView
. Optional.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_mainContent":{"name":"uiView_mainContent","abstract":"This will be the view that slides sideways to reveal some content underneath. It needs to be pinned to the cell’s contentView
using the layoutConstraint
(among others).
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell/RevealingState.html":{"name":"RevealingState","abstract":"Describes the state of a RevealingTableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC14revealingStateAB0aF0Ovp":{"name":"revealingState","abstract":"The cell’s current revealing state
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC03setA5State_8animatedyAB0aF0O_SbtF":{"name":"setRevealingState(_:animated:)","abstract":"Sets the cell’s revealing state with an optional animation.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC09revealingD8DelegateAA0abcdF0_pSgvp":{"name":"revealingCellDelegate","abstract":"Delegate for the RevealingTableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)awakeFromNib":{"name":"awakeFromNib()","abstract":"Documented in: NSObject
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)prepareForReuse":{"name":"prepareForReuse()","abstract":"Documented in: UITableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@CM@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)gestureRecognizerShouldBegin:":{"name":"gestureRecognizerShouldBegin(_:)","abstract":"Documented in: UIGestureRecognizerDelegate
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html":{"name":"RevealingTableViewCell","abstract":"A UITableViewCell
subclass that can be swiped to reveal content udnerneath it’s main view
"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally.
"},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}}
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/Documents/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/nikolaysuvandzhiev/Documents/MyGithubRepos/RevealingTableViewCell"
6 | }
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/docSet.dsidx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/docsets/RevealingTableViewCell.docset/Contents/Resources/docSet.dsidx
--------------------------------------------------------------------------------
/docs/docsets/RevealingTableViewCell.tgz:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/docsets/RevealingTableViewCell.tgz
--------------------------------------------------------------------------------
/docs/img/carat.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/img/carat.png
--------------------------------------------------------------------------------
/docs/img/dash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/img/dash.png
--------------------------------------------------------------------------------
/docs/img/gh.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/sovata8/RevealingTableViewCell/d3c3a3ff3b3c35718b8012a979b955530e54a616/docs/img/gh.png
--------------------------------------------------------------------------------
/docs/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RevealingTableViewCell Reference
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
19 |
20 |
21 | RevealingTableViewCell Reference
22 |
23 | RevealingTableViewCell Reference
24 |
25 |
26 |
27 |
58 |
59 |
60 |
61 |
62 | RevealingTableViewCell
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 | What is it?
72 | •
73 | Check it out
74 | •
75 | Installation
76 | •
77 | Usage
78 | •
79 | Documentation
80 |
81 | What is it?
82 |
83 | RevealingTableViewCell
is a UITableViewCell
that can be swiped to reveal content underneath its main view.
84 |
85 |
86 | Zero-code setup: RevealingTableViewCell
can be set up through Interface Builder, with no code changes.
87 | ‘Bring your own views’ - Note that RevealingTableViewCell
does not provide anything other than the sliding view - it’s up to you to set up any views that need be revealed, e.g. buttons etc.)
88 |
89 |
90 |
91 |
92 |
93 | Check it out
94 | CocoaPods
95 | pod try RevealingTableViewCell
96 |
97 |
98 | (this command clones the example project in a temporary folder and opens it in Xcode)
99 | Directly from the repo
100 |
101 | Clone or download this repository and then open Example/RevealingTableViewCellExample.xcodeproj
.
102 | Demo video
103 |
104 |
107 |
108 | (opens in YouTube)
109 | Installation
110 |
111 | Requires: iOS 10 +
112 |
113 | pod 'RevealingTableViewCell'
114 |
115 |
116 | github "sovata8/RevealingTableViewCell"
117 |
118 | Usage
119 |
120 | No code changes required, everything is done in Interface Builder.
121 | Note that this framework does not provide anything other than the sliding view - it’s up to you to set up any views that need be revealed (e.g. buttons, additional information etc.).
122 |
123 | These screenshots show how to set up your views and IBOutlets:
124 |
125 |
126 |
127 |
128 | Step 1
129 |
130 | Use RevealingTableViewCell
(or your subclass of it) as a custom class for your tableview cell in Interface Builder.
131 | Step 2
132 |
133 | Inside the cell’s default contentView
, put a subview and connect it to the the IBOutlet
uiView_mainContent
. This will be the view that slides sideways to reveal some content underneath. Using AutoLayout, pin this uiView_mainContent
to it’s superview (the contentView
) using the following constraints:
134 |
135 | uiView_mainContent.centerX = superview.centerX
136 | uiView_mainContent.width = superview.width
137 | uiView_mainContent.height = superview.height
138 | uiView_mainContent.centerY = superview.centerY
139 |
140 | (or instead of the height
and centerY
constraints, you can use top
and bottom
constraints)
141 | Step 3
142 |
143 | Inside the cell’s default contentView
, put and connect uiView_revealedContent_left
and/or uiView_revealedContent_right
subviews. Pin them using AutoLayout to the corresponding sides of your cell. Fix their widths. Make sure they are behind the uiView_mainContent
.
144 | Step 4
145 |
146 | That’s all - run your app!
147 | Making the cells close when needed (optional)
148 |
149 | Usually, you would want cells to automatically close whenever you scroll the tableview, or when another cell is swiped sideways. To achieve this, use the provided tableview extension function closeAllCells(exceptThisOne:)
. Here is an example (from the example project):
150 | // Close all cells when the tableview starts scrolling vertically
151 | extension ViewController : UIScrollViewDelegate
152 | {
153 | func scrollViewDidScroll ( _ scrollView : UIScrollView )
154 | {
155 | self . uiTableView . closeAllCells ()
156 | }
157 | }
158 |
159 | // Close all other cells when a particular cell starts being swiped
160 | extension ViewController : RevealingTableViewCellDelegate
161 | {
162 | func didStartPanGesture ( cell : RevealingTableViewCell )
163 | {
164 | self . uiTableView . closeAllCells ( exceptThisOne : cell )
165 | }
166 | }
167 |
168 |
169 | (of course when you are creating the cell in your cellForRowAt indexPath
logic, don’t forget to set the delegate like this: cell.revealingCellDelegate = self
)
170 | Documentation
171 |
172 | Check out the auto-generated Documentation .
173 | (If you’re reading this on GitHub, and the above link opens the html source, try this )
174 | Used by
175 |
176 |
177 | PivotList
178 |
179 | Please let me know if you use RevealingTableViewCell
in your app and would like to be mentioned here. (either email me or create e new issue with the usedby label)
180 | Known limitations and considerations
181 |
182 | The way this library works requires that all the ‘hidden’ views (the ones that are behind the main view and are revealed when sliding), are in the view hierarchy of the cell at all times, even if they are never shown. This is obviously not great when performance matters.
183 | License
184 |
185 | This project is licensed under the terms of the MIT license. See the LICENSE file.
186 |
187 |
188 |
189 |
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/docs/js/jazzy.js:
--------------------------------------------------------------------------------
1 | window.jazzy = {'docset': false}
2 | if (typeof window.dash != 'undefined') {
3 | document.documentElement.className += ' dash'
4 | window.jazzy.docset = true
5 | }
6 | if (navigator.userAgent.match(/xcode/i)) {
7 | document.documentElement.className += ' xcode'
8 | window.jazzy.docset = true
9 | }
10 |
11 | function toggleItem($link, $content) {
12 | var animationDuration = 300;
13 | $link.toggleClass('token-open');
14 | $content.slideToggle(animationDuration);
15 | }
16 |
17 | function itemLinkToContent($link) {
18 | return $link.parent().parent().next();
19 | }
20 |
21 | // On doc load + hash-change, open any targetted item
22 | function openCurrentItemIfClosed() {
23 | if (window.jazzy.docset) {
24 | return;
25 | }
26 | var $link = $(`.token[href="${location.hash}"]`);
27 | $content = itemLinkToContent($link);
28 | if ($content.is(':hidden')) {
29 | toggleItem($link, $content);
30 | }
31 | }
32 |
33 | $(openCurrentItemIfClosed);
34 | $(window).on('hashchange', openCurrentItemIfClosed);
35 |
36 | // On item link ('token') click, toggle its discussion
37 | $('.token').on('click', function(event) {
38 | if (window.jazzy.docset) {
39 | return;
40 | }
41 | var $link = $(this);
42 | toggleItem($link, itemLinkToContent($link));
43 |
44 | // Keeps the document from jumping to the hash.
45 | var href = $link.attr('href');
46 | if (history.pushState) {
47 | history.pushState({}, '', href);
48 | } else {
49 | location.hash = href;
50 | }
51 | event.preventDefault();
52 | });
53 |
54 | // Clicks on links to the current, closed, item need to open the item
55 | $("a:not('.token')").on('click', function() {
56 | if (location == this.href) {
57 | openCurrentItemIfClosed();
58 | }
59 | });
60 |
--------------------------------------------------------------------------------
/docs/search.json:
--------------------------------------------------------------------------------
1 | {"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP09didChangeA5State4cellyA2AC_tF":{"name":"didChangeRevealingState(cell:)","abstract":"This is called when the state changes and if there is an animation, it is called at the start of the animation.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP18didStartPanGesture4cellyA2AC_tF":{"name":"didStartPanGesture(cell:)","abstract":"Called when the user sarts horizontally sliding the cell.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html#/s:22RevealingTableViewCell0abcD8DelegateP25didFinishAnimatingInState4cell09revealingJ0yA2AC_AG0aJ0OtF":{"name":"didFinishAnimatingInState(cell:revealingState:)","abstract":"Called at the end of an animation.
","parent_name":"RevealingTableViewCellDelegate"},"Protocols/RevealingTableViewCellDelegate.html":{"name":"RevealingTableViewCellDelegate","abstract":"Delegate for the RevealingTableViewCell
"},"Extensions/UITableView.html#/s:So11UITableViewC014RevealingTableB4CellE13closeAllCells13exceptThisOneyA2CCSg_tF":{"name":"closeAllCells(exceptThisOne:)","abstract":"Closes all the cells (unless you specify a cell to leave open).
","parent_name":"UITableView"},"Extensions/UITableView.html":{"name":"UITableView","abstract":"Extension for easy closing of RevealingTableViewCells in a tableView
"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO6closedyA2DmF":{"name":"closed","abstract":"The default state (none of the views underneath are revealed)
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO8openLeftyA2DmF":{"name":"openLeft","abstract":"When uiView_revealedContent_left
is revealed
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell/RevealingState.html#/s:22RevealingTableViewCellAAC0A5StateO9openRightyA2DmF":{"name":"openRight","abstract":"When uiView_revealedContent_right
is revealed
","parent_name":"RevealingState"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_revealedContent_left":{"name":"uiView_revealedContent_left","abstract":"The content to be revealed, pinned to the left of the cell’s contentView
. Optional.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_revealedContent_right":{"name":"uiView_revealedContent_right","abstract":"The content to be revealed, pinned to the right of the cell’s contentView
. Optional.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(py)uiView_mainContent":{"name":"uiView_mainContent","abstract":"This will be the view that slides sideways to reveal some content underneath. It needs to be pinned to the cell’s contentView
using the layoutConstraint
(among others).
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell/RevealingState.html":{"name":"RevealingState","abstract":"Describes the state of a RevealingTableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC14revealingStateAB0aF0Ovp":{"name":"revealingState","abstract":"The cell’s current revealing state
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC03setA5State_8animatedyAB0aF0O_SbtF":{"name":"setRevealingState(_:animated:)","abstract":"Sets the cell’s revealing state with an optional animation.
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/s:22RevealingTableViewCellAAC09revealingD8DelegateAA0abcdF0_pSgvp":{"name":"revealingCellDelegate","abstract":"Delegate for the RevealingTableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)awakeFromNib":{"name":"awakeFromNib()","abstract":"Documented in: NSObject
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@M@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)prepareForReuse":{"name":"prepareForReuse()","abstract":"Documented in: UITableViewCell
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html#/c:@CM@RevealingTableViewCell@objc(cs)RevealingTableViewCell(im)gestureRecognizerShouldBegin:":{"name":"gestureRecognizerShouldBegin(_:)","abstract":"Documented in: UIGestureRecognizerDelegate
","parent_name":"RevealingTableViewCell"},"Classes/RevealingTableViewCell.html":{"name":"RevealingTableViewCell","abstract":"A UITableViewCell
subclass that can be swiped to reveal content udnerneath it’s main view
"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally.
"},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"}}
--------------------------------------------------------------------------------
/docs/undocumented.json:
--------------------------------------------------------------------------------
1 | {
2 | "warnings": [
3 |
4 | ],
5 | "source_directory": "/Users/nikolaysuvandzhiev/Documents/MyGithubRepos/RevealingTableViewCell"
6 | }
--------------------------------------------------------------------------------