Enhance orientation handling in InteractivePreview and Preview classes #43
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Improved the handling of orientation changes in the
InteractivePreview
andPreview
classes to ensure proper resizing and layout adjustments of theAVCaptureVideoPreviewLayer
during device rotation. These changes address issues where the preview layer would not correctly adapt to new geometry sizes, leading to misalignment.Details
InteractivePreview
:onChange
modifier to observe changes in the geometry size.layer
frame on the main dispatch queue to ensure proper resizing.Preview
:previewLayer.frame
inupdateUIViewController
.previewLayer
is added to the view controller’s layer only if it hasn’t been added already.previewLayer.frame
on the main dispatch queue to ensure it resizes correctly when the view bounds change.Note
This will not affect the orientation of the session. To do that, application code must wrap the preview layer with handlers that call
aespaSession.common(.orientation(orientation: ...))
. I have some code that demonstrates this, but it's very specific to my app, so I couldn't cleanly extract a good example for the README. I can try to tackle that in a future commit.