@@ -85,22 +85,10 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
8585
8686 // This test is currently disabled due to a bug in iOSSnapshotTestCase. See cashapp/AccessibilitySnapshot#75.
8787 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+ )
10492
10593 usingDrawViewHierarchyInRect {
10694 SnapshotVerifyAccessibility ( view, useMonochromeSnapshot: false )
@@ -158,24 +146,13 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
158146
159147 // This test is currently disabled due to a bug in iOSSnapshotTestCase. See cashapp/AccessibilitySnapshot#75.
160148 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+ )
177153
178154 let viewController = UIViewController ( )
155+ viewController. additionalSafeAreaInsets = . init( top: 600 , left: 1000 , bottom: 300 , right: 100 )
179156 viewController. view = view
180157
181158 let parent = UIViewController ( )
@@ -196,4 +173,68 @@ final class AccessibilitySnapshotTests: SnapshotTestCase {
196173 usesDrawViewHierarchyInRect = oldValue
197174 }
198175
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+
199240}
0 commit comments