Fix compose reply avatar scroll effect not working on iOS 15
This commit is contained in:
parent
91f1a5195c
commit
8889261b6b
|
@ -52,9 +52,20 @@ struct ComposeReplyView: View {
|
||||||
private func replyAvatarImage(geometry: GeometryProxy) -> some View {
|
private func replyAvatarImage(geometry: GeometryProxy) -> some View {
|
||||||
// using named coordinate spaces produces an incorrect scroll offset on iOS 13,
|
// using named coordinate spaces produces an incorrect scroll offset on iOS 13,
|
||||||
// so simply compare the geometry inside and outside the scroll view in the global coordinate space
|
// so simply compare the geometry inside and outside the scroll view in the global coordinate space
|
||||||
var scrollOffset = outerMinY - geometry.frame(in: .global).minY
|
let scrollOffset = outerMinY - geometry.frame(in: .global).minY
|
||||||
scrollOffset += stackPadding
|
|
||||||
let offset = min(max(scrollOffset, 0), geometry.size.height - 50 - stackPadding)
|
// add stackPadding so that the image is always at least stackPadding away from the top
|
||||||
|
var offset = scrollOffset + stackPadding
|
||||||
|
|
||||||
|
// offset can never be less than 0 (i.e., above the top of the in-reply-to content)
|
||||||
|
offset = max(offset, 0)
|
||||||
|
|
||||||
|
// subtract 50, because we care about where the bottom of the view is but the offset is relative to the top of the view
|
||||||
|
let maxOffset = (contentHeight ?? 0) - 50
|
||||||
|
|
||||||
|
// once you scroll past the in-reply-to-content, the bottom of the avatar should be pinned to the bottom of the content
|
||||||
|
offset = min(offset, maxOffset)
|
||||||
|
|
||||||
return ComposeAvatarImageView(url: status.account.avatar)
|
return ComposeAvatarImageView(url: status.account.avatar)
|
||||||
.frame(width: 50, height: 50)
|
.frame(width: 50, height: 50)
|
||||||
.cornerRadius(preferences.avatarStyle.cornerRadiusFraction * 50)
|
.cornerRadius(preferences.avatarStyle.cornerRadiusFraction * 50)
|
||||||
|
|
Loading…
Reference in New Issue