diff --git a/yobble/Views/Tab/Settings/EditProfileView.swift b/yobble/Views/Tab/Settings/EditProfileView.swift index 7173997..21b0238 100644 --- a/yobble/Views/Tab/Settings/EditProfileView.swift +++ b/yobble/Views/Tab/Settings/EditProfileView.swift @@ -418,13 +418,28 @@ struct AvatarViewerView: View { scale > 1.05 ? panOffset : dismissOffset } + private var dragProgress: CGFloat { + guard scale <= 1.05 else { return 0 } + let progress = min(1, abs(dismissOffset.height) / 220) + return progress + } + + private var backgroundOpacity: Double { + Double(1 - dragProgress * 0.6) + } + + private var overlayOpacity: Double { + Double(1 - dragProgress * 0.8) + } + var body: some View { ZStack { - Color.black.ignoresSafeArea() + Color.black.opacity(backgroundOpacity).ignoresSafeArea() zoomableContent topOverlay + .opacity(overlayOpacity) } } @@ -512,7 +527,8 @@ struct AvatarViewerView: View { height: storedPanOffset.height + value.translation.height ) } else { - dismissOffset = value.translation + let limitedWidth = min(max(value.translation.width, -80), 80) + dismissOffset = CGSize(width: limitedWidth, height: value.translation.height) } } .onEnded { value in