@@ -85,22 +85,10 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
85
85
86
86
// This test is currently disabled due to a bug in iOSSnapshotTestCase. See cashapp/AccessibilitySnapshot#75.
87
87
func testLargeViewThatRequiresTiling( ) throws {
88
- let view = UIView ( frame: CGRect ( x: 0 , y: 0 , width: 3000 , height: 3000 ) )
89
-
90
- let gradientLayer = CAGradientLayer ( )
91
- gradientLayer. colors = [ UIColor . blue. cgColor, UIColor . white. cgColor]
92
- gradientLayer. startPoint = CGPoint ( x: 0 , y: 0 )
93
- gradientLayer. endPoint = CGPoint ( x: 1 , y: 1 )
94
- view. layer. addSublayer ( gradientLayer)
95
- gradientLayer. frame = view. bounds
96
-
97
- let label = UILabel ( )
98
- label. text = " Hello world "
99
- label. textColor = . red
100
- view. addSubview ( label)
101
-
102
- label. sizeToFit ( )
103
- label. center = view. point ( at: . center)
88
+ let view = GradientBackgroundView (
89
+ frame: CGRect ( x: 0 , y: 0 , width: 3000 , height: 3000 ) ,
90
+ showSafeAreaInsets: true
91
+ )
104
92
105
93
usingDrawViewHierarchyInRect {
106
94
SnapshotVerifyAccessibility ( view, useMonochromeSnapshot: false )
@@ -158,24 +146,13 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
158
146
159
147
// This test is currently disabled due to a bug in iOSSnapshotTestCase. See cashapp/AccessibilitySnapshot#75.
160
148
func testLargeViewInViewControllerThatRequiresTiling( ) {
161
- let view = UIView ( frame: CGRect ( x: 0 , y: 0 , width: 3000 , height: 3000 ) )
162
-
163
- let gradientLayer = CAGradientLayer ( )
164
- gradientLayer. colors = [ UIColor . blue. cgColor, UIColor . white. cgColor]
165
- gradientLayer. startPoint = CGPoint ( x: 0 , y: 0 )
166
- gradientLayer. endPoint = CGPoint ( x: 1 , y: 1 )
167
- view. layer. addSublayer ( gradientLayer)
168
- gradientLayer. frame = view. bounds
169
-
170
- let label = UILabel ( )
171
- label. text = " Hello world "
172
- label. textColor = . red
173
- view. addSubview ( label)
174
-
175
- label. sizeToFit ( )
176
- label. center = view. point ( at: . center)
149
+ let view = GradientBackgroundView (
150
+ frame: CGRect ( x: 0 , y: 0 , width: 3000 , height: 3000 ) ,
151
+ showSafeAreaInsets: true
152
+ )
177
153
178
154
let viewController = UIViewController ( )
155
+ viewController. additionalSafeAreaInsets = . init( top: 600 , left: 1000 , bottom: 300 , right: 100 )
179
156
viewController. view = view
180
157
181
158
let parent = UIViewController ( )
@@ -196,4 +173,68 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
196
173
usesDrawViewHierarchyInRect = oldValue
197
174
}
198
175
176
+ // MARK: - Private Types
177
+
178
+ private final class GradientBackgroundView : UIView {
179
+
180
+ // MARK: - Life Cycle
181
+
182
+ init ( frame: CGRect , showSafeAreaInsets: Bool ) {
183
+ super. init ( frame: frame)
184
+
185
+ gradientLayer. colors = [ UIColor . blue. cgColor, UIColor . white. cgColor]
186
+ gradientLayer. startPoint = CGPoint ( x: 0 , y: 0 )
187
+ gradientLayer. endPoint = CGPoint ( x: 1 , y: 1 )
188
+ layer. addSublayer ( gradientLayer)
189
+
190
+ label. text = " Hello world "
191
+ label. textColor = . red
192
+ label. backgroundColor = . black
193
+ addSubview ( label)
194
+
195
+ safeAreaView. layer. borderColor = UIColor . red. cgColor
196
+ safeAreaView. layer. borderWidth = 1
197
+ safeAreaView. isHidden = !showSafeAreaInsets
198
+ addSubview ( safeAreaView)
199
+
200
+ layoutMargins = . init( top: 8 , left: 8 , bottom: 8 , right: 8 )
201
+ insetsLayoutMarginsFromSafeArea = true
202
+
203
+ layoutMarginsView. layer. borderColor = UIColor . green. cgColor
204
+ layoutMarginsView. layer. borderWidth = 0.5
205
+ layoutMarginsView. isHidden = !showSafeAreaInsets
206
+ addSubview ( layoutMarginsView)
207
+ }
208
+
209
+ @available ( * , unavailable)
210
+ required init ? ( coder: NSCoder ) {
211
+ fatalError ( " init(coder:) has not been implemented " )
212
+ }
213
+
214
+ // MARK: - Private Properties
215
+
216
+ private let gradientLayer : CAGradientLayer = . init( )
217
+
218
+ private let label : UILabel = . init( )
219
+
220
+ private let safeAreaView : UIView = . init( )
221
+
222
+ private let layoutMarginsView : UIView = . init( )
223
+
224
+ // MARK: - UIView
225
+
226
+ override func layoutSubviews( ) {
227
+ gradientLayer. frame = bounds
228
+
229
+ let insetBounds = bounds. inset ( by: safeAreaInsets)
230
+
231
+ label. sizeToFit ( )
232
+ label. center = CGPoint ( x: insetBounds. midX, y: insetBounds. midY)
233
+
234
+ safeAreaView. frame = insetBounds
235
+ layoutMarginsView. frame = bounds. inset ( by: layoutMargins)
236
+ }
237
+
238
+ }
239
+
199
240
}
0 commit comments