如何在 SwiftUI 中放大 ScrollView

2024-02-17

我正在尝试在 Catalyst 应用程序的 SwiftUI 中缩放和平移图像。没有 PanGesture,但 ScrollView 似乎在 iPad 和 Mac 上都运行良好。我只是无法在放大的图像上滚动。

struct TestScrollView: View {
    @State var scale: CGFloat = 1.0
    
    var body: some View {
        VStack {
            ScrollView([.horizontal,.vertical], showsIndicators: false) {
                    Image("image")
                        .resizable()
            }
            .gesture(MagnificationGesture()
            .onChanged({ (scale) in
                self.scale = scale
            }))
                .scaleEffect(self.scale)
        }
    }
}

并使用以下代码...

ScrollView([.horizontal,.vertical], showsIndicators: false) {
    Image("large_image")
        .resizable()
        .gesture(MagnificationGesture()
                    .onChanged({ (scale) in
                        self.scale = scale
                    }))
        .scaleEffect(self.scale)
}

...我明白了:

它似乎向右滚动了很多,并且在左侧被切断。


应用后内容的框架大小似乎保持不变scaleEffect,这就是为什么你无法在内部滚动ScrollView。没有地方可以滚动。您可以通过在缩放后手动指定帧大小来解决该问题。如果您不知道原始帧尺寸,请使用GeometryReader计算动态缩放后的帧大小。

ScrollView([.horizontal, .vertical], showsIndicators: false) {
    Image(systemName: "square.fill")
        .resizable()
        .frame(width: 200, height: 200)
        .scaleEffect(self.scale)
        .frame(
            width: 200 * self.scale,
            height: 200 * self.scale
        )
}
.gesture(magnificationGesture)

另外,你的MagnificationGesture's onChanged实施上存在一些问题。参考这个答案 https://stackoverflow.com/questions/58341820/isnt-there-an-easy-way-to-pinch-to-zoom-in-an-image-in-swiftui/58468234#58468234由詹姆斯.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 SwiftUI 中放大 ScrollView 的相关文章

随机推荐

  • 移动客户端/服务器应用程序中基于 Socket 与基于 HTTP 的通信

    我最近决定承担一个相当大的软件工程项目 其中涉及开发基于客户端 服务器的应用程序 我的计划是开发尽可能多的客户端 包括原生 iPhone Android 和 Blackberry 应用程序以及基于 Web 的应用程序 对于我的服务器 我计划
  • Parse.com PHP SDK 获取对象的用户关系

    我将用户 喜欢 保存为与 Post 对象的关系 就像在文档中一样 user ParseUser getCurrentUser post new ParseObject Post the post id relation user gt ge
  • iframe 中传递 URL 参数问题

    塞尔去http yoursite com your typeform page code 1 http yoursite com your typeform page code 1使用浏览器 该页面需要添加一个 IFRAME 其 url 为
  • 在 C# 中组合多个条件表达式

    在 C 中 而不是这样做if index 7 index 8 有没有办法将它们结合起来 我在想类似的事情if index 7 8 您可以使用扩展方法来完成此任务 public static bool In
  • 3D 图形处理 - 如何计算模型视图矩阵

    我无法理解从对象空间转换为视图空间的数学 我在硬件中执行此操作 并且我有下面的 Atranspose 矩阵 转置 rightx upx lookx 0 righty upy looky 0 rightz upz lookz 0 eyerig
  • VPERMILPS 指令 (_mm_permute_ps) 有什么意义?

    AVX指令集引入了VPERMILPS 它似乎是SHUFPS的简化版本 对于两个输入寄存器相同的情况 例如 以下指令 c5 f0 c6 c1 00 vshufps xmm0 xmm1 xmm1 0x0 可以替换为 c4 e3 79 04 c1
  • 带警报的 onchange 在 ie 中不起作用

    基于 JavaScript 的标签 type file 创建 并在该标签中添加一个属性 该属性名称onchange 我将分配警报 但在 Internet Explorer 中选择新文件时没有出现警报 choicefile setAttrib
  • 大规模使用迈耶的建议来选择非会员、非好友功能?

    一段时间以来 我一直将类接口设计得最小化 与成员函数相比 我更喜欢命名空间包装的非成员函数 基本上遵循 Scott Meyer 在文章中的建议非成员函数如何改进封装 http www drdobbs com cpp 184401197 我在
  • 修改 localIdentName / getLocalIdent 的输出

    我正在开发一个小部件 它可以嵌入 任何 网站上 并使用 css loader 为我的 CSS 类提供唯一的名称以避免冲突 在我的 webpack config js 中 我有以下行 localIdentName productname fo
  • 如何计算 Django 模型中某些字段的平均值并将其发送到 REST API?

    我想计算评分的平均值 在评论模型中 并将其发送到我的 API 模型 py from django db import models from adminuser models import Categories from accounts
  • 如何在 SSMS 结果中搜索字符串/子字符串?

    这看起来非常简单 但由于某种原因 我没有找到任何关于如何做到这一点的信息 我正在使用 SQL Server Management Studio 2012 并且我有一组从 SELECT 查询返回的结果 例如 select a b from x
  • 如何为列表中的 3 个最高值建立索引?

    所以我有这两个列表 score 350 914 569 223 947 284 567 333 697 245 227 785 120 794 343 773 293 995 name Ryan Stacy Jenna Peter Soph
  • Installshield安装成功后,不启动exe

    我正在使用单个 MSI 项目 成功安装后 我选择复选框来启动我的软件 然后单击完成 即使我检查并单击 完成 它也不会启动我的软件 到目前为止 我发现确保启动目录有效的唯一方法是 启动产品 复选框的属性选项卡 其属性设置为 LAUNCHPRO
  • 获取 PHP 数组值并循环打印 [重复]

    这个问题在这里已经有答案了 我有一张有 9 行的表 第一列应打印排名中每个参与者的姓名 首先 我创建了一个包含它们名称的数组 names array Mike Kyle Johnny Will Vasques 对于此任务 我编写了一个 5
  • 在 Vim 中禁用“进入 Ex 模式”

    我每天都会偶然收到以下 10 次 进入防爆模式 输入 视觉 进入正常模式 如何在 Vim 中禁用导致它的组合
  • 在 numpy 中对某个范围内的随机浮点数进行采样

    如何在 numpy 中对区间 a b 上的随机浮点数进行采样 不只是整数 而是任何实数 例如 random float 5 10 将返回之间的随机数 5 10 谢谢 The 均匀分布 https numpy org doc stable r
  • Java Servlet容器性能如何?

    我想向这里的 Java 专业人士询问一个关于我当前即将进行的研究的问题 各种 servlet 容器的效率差异的关键因素是什么 我需要比较 Tomcat JBoss Glassfish Jetty 等 并且我需要知道哪些 因素 可能以最显着的
  • Windows Mobile 模拟器联网到主机

    我正在尝试在 VS2008 中进行一些 Windows Mobile 开发 WM 应用程序正在进行 WCF 调用 或尝试进行 模拟器和我的 WCF 服务器在同一台台式电脑上运行 我找到了一些关于如何结合Virtual PC2007在WM5模
  • 使用Twig生成JSON

    我想要一个返回简单 JSON 对象的 URL 我正在尝试使用 Twig 生成 JSON 对象 urls for child in page root child url if not loop last endif endfor 不过 回车
  • 如何在 SwiftUI 中放大 ScrollView

    我正在尝试在 Catalyst 应用程序的 SwiftUI 中缩放和平移图像 没有 PanGesture 但 ScrollView 似乎在 iPad 和 Mac 上都运行良好 我只是无法在放大的图像上滚动 struct TestScroll