@@ -158,9 +158,9 @@ class UIRedactBuilder {
158
158
var redactingRegions = [ RedactRegion] ( )
159
159
160
160
self . mapRedactRegion ( fromView: view,
161
+ relativeTo: nil ,
161
162
redacting: & redactingRegions,
162
- rootFrame: view. frame,
163
- transform: CGAffineTransform . identity)
163
+ rootFrame: view. frame)
164
164
165
165
var swiftUIRedact = [ RedactRegion] ( )
166
166
var otherRegions = [ RedactRegion] ( )
@@ -198,12 +198,12 @@ class UIRedactBuilder {
198
198
return image. imageAsset? . value ( forKey: " _containingBundle " ) == nil
199
199
}
200
200
201
- private func mapRedactRegion( fromView view: UIView , redacting: inout [ RedactRegion ] , rootFrame: CGRect , transform : CGAffineTransform , forceRedact: Bool = false ) {
201
+ private func mapRedactRegion( fromView view: UIView , relativeTo parentLayer : CALayer ? , redacting: inout [ RedactRegion ] , rootFrame: CGRect , forceRedact: Bool = false ) {
202
202
guard !redactClassesIdentifiers. isEmpty && !view. isHidden && view. alpha != 0 else { return }
203
203
204
204
let layer = view. layer. presentation ( ) ?? view. layer
205
205
206
- let newTransform = concatenateTranform ( transform , with : layer )
206
+ let newTransform = getTranform ( from : layer , withParent : parentLayer )
207
207
208
208
let ignore = !forceRedact && shouldIgnore ( view: view)
209
209
let swiftUI = SentryRedactViewHelper . shouldRedactSwiftUI ( view)
@@ -233,23 +233,24 @@ class UIRedactBuilder {
233
233
redacting. append ( RedactRegion ( size: layer. bounds. size, transform: newTransform, type: . clipEnd) )
234
234
}
235
235
for subview in view. subviews. sorted ( by: { $0. layer. zPosition < $1. layer. zPosition } ) {
236
- mapRedactRegion ( fromView: subview, redacting: & redacting, rootFrame: rootFrame, transform : newTransform , forceRedact: enforceRedact)
236
+ mapRedactRegion ( fromView: subview, relativeTo : layer , redacting: & redacting, rootFrame: rootFrame, forceRedact: enforceRedact)
237
237
}
238
238
if view. clipsToBounds {
239
239
redacting. append ( RedactRegion ( size: layer. bounds. size, transform: newTransform, type: . clipBegin) )
240
240
}
241
241
}
242
-
242
+
243
243
/**
244
- Apply the layer transformation and position to given transformation .
244
+ Gets a transform that represents the layer global position .
245
245
*/
246
- private func concatenateTranform ( _ transform : CGAffineTransform , with layer : CALayer ) -> CGAffineTransform {
246
+ private func getTranform ( from layer : CALayer , withParent parentLayer : CALayer ? ) -> CGAffineTransform {
247
247
let size = layer. bounds. size
248
- let layerMiddle = CGPoint ( x: size. width * layer. anchorPoint. x, y: size. height * layer. anchorPoint. y)
249
-
250
- var newTransform = transform. translatedBy ( x: layer. position. x, y: layer. position. y)
248
+ let anchorPoint = CGPoint ( x: size. width * layer. anchorPoint. x, y: size. height * layer. anchorPoint. y)
249
+ let position = parentLayer? . convert ( layer. position, to: nil ) ?? layer. position
250
+
251
+ var newTransform = CGAffineTransform ( translationX: position. x, y: position. y)
251
252
newTransform = CATransform3DGetAffineTransform ( layer. transform) . concatenating ( newTransform)
252
- return newTransform. translatedBy ( x: - layerMiddle . x, y: - layerMiddle . y)
253
+ return newTransform. translatedBy ( x: - anchorPoint . x, y: - anchorPoint . y)
253
254
}
254
255
255
256
/**
0 commit comments