使用 SwiftUI 使自定义 UIView 方面比例适合/填充时出现问题

2023-12-15

SwiftUI 中没有公共 API 来响应 View 协议的可调整大小修饰符。只有 SwiftUI 中的 Image 可以与 .ressized() 一起使用。自定义 UIView(如 GIF 的 UIView)现在无法调整大小。

我使用 SDWebImageSwiftUI AnimatedImage,它支持 UIKit View SDAnimatedImageView。 AnimatedImage 不响应 .ressized()、.scaleToFit、.aspectRatio(contentMode: .fit) 等。WebImage 支持 SwiftUI Image,因此工作正常。

import SwiftUI
import SDWebImageSwiftUI

struct ContentView: View {
    let url = URL(string: "https://media.giphy.com/media/H62DGtBRwgbrxWXh6t/giphy.gif")!
    var body: some View {
        VStack {
            AnimatedImage(url: url)
                .scaledToFit()
                .frame(width: 100, height: 100)
            WebImage(url: url)
                .scaledToFit()
                .frame(width: 100, height: 100)
        }
    }
}

不确定这是否是苹果的一个错误。期望像 SDWebImageSwiftUI AnimatedImage 这样的自定义视图能够响应 SwiftUI 大小相关的修饰符,例如 .scaledToFit()。

相关问题:https://github.com/SDWebImage/SDWebImageSwiftUI/issues/3


SwiftUI 使用压缩阻力优先级和内容拥抱优先级来决定可以调整的大小。

如果要将视图大小调整为低于其固有内容大小,则需要降低压缩阻力优先级。

Example:

func makeUIView(context: Context) -> UIView {
    let imageView = UIImageView(image: UIImage(named: "yourImage")!)
    imageView.setContentCompressionResistancePriority(.defaultLow, for: .horizontal)
    imageView.setContentCompressionResistancePriority(.defaultLow, for: .vertical)
    return imageView
}

这将允许您设置.frame(width:height:)到您想要的任何尺寸。

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

使用 SwiftUI 使自定义 UIView 方面比例适合/填充时出现问题 的相关文章

随机推荐

  • 通过使用最小交换交换相邻元素来对序列进行排序

    我们有一个未排序的 N 个数字序列 1 2 3 4 N 我们可以通过按特定顺序交换相邻元素来对整个序列进行排序 给定一个序列 如何计算对序列进行排序所需的最小可能交换 作为示例 请考虑序列 4 2 5 3 1 对此进行排序的最佳方法是按以下
  • 使用REGEX用SED解析括号

    我正在寻找命令sed它转换这个输入流 dummy key1 key2 dummy key3 dummy key4 dummy dummy key5 dummy dummy dummy key6 dummy key7 dummy 进入这个 k
  • 下一个更高的素数和回文数

    是否有关于从给定的整数中求解下一个更高的素数和回文数的建议 这是我正在尝试的片段 但它有点慢 请建议我是否有任何好的算法可以测试 usr bin python def next higher n while True s str n if
  • 报告设计无效。未找到字段 Jasper 报告

    我正在尝试创建一个基本的碧玉报告JRBeanCollectionDataSource 在那里 我有一个 javabean 内的对象列表 public class Course private int id private List
  • 计算pandas数据框中每列值的变化

    有没有什么巧妙的方法来计算 pandas 数据框中每列值的变化次数 我不想在每一列上循环 例如 import pandas as pd frame pd DataFrame time 1234567000 1234567005 123456
  • AngularJs指令添加属性,事件不被触发

    大家早上好 我对这个指令有点困惑 我想要的是从 getProperties 函数接收一个 JSON 字符串 例如 class someclass ng change someChange ng click someCLick 该指令将创建
  • Android 寻呼机暂停问题

    我正在使用 Pager 和兼容性库构建一个应用程序 每当我尝试暂停应用程序时 例如 当我回到桌面时 我的应用程序都会强制关闭 我从未遇到过此类错误 因此我不知道如何解决它 我将向您展示我的代码 而我确信您不必查看它 public class
  • 使用Functional Swift 求斐波那契项的总和

    我正在尝试学习函数式 Swift 并开始从 Project Euler 做一些练习 甚至斐波那契数列 问题2 斐波那契数列中的每一项新项都是通过添加前两项而生成的 从 1 和 2 开始 前 10 项将是 1 2 3 5 8 13 21 34
  • 删除R中的多个值

    我有一个大约有 14 000 行和 40 列的数据集 我试图删除数据集第一列中具有以下值的所有行 但是当我执行类似操作时 filter data set data set DMS rem rem lt c 02M177 02M267 02M
  • EJB 3.1 依赖注入失败

    我创建了一个无状态会话 bean 如下所示 WebServlet name ProductController urlPatterns ProductController public class ProductController ext
  • MS Teams 活动源通知不会发送到移动设备

    我已经成功实施了活动提要通知在我的 MS Teams 应用程序 选项卡 中 问题是 我在移动设备上没有收到它们 既没有推送通知 也没有活动源中的项目 Web 和桌面上的活动源填充了相同的项目 但移动设备上没有任何内容 Web 和桌面版本工作
  • 混乱的 CSV 会导致异常

    我想我发现了一个错误 或者也许不是 但 Super CSV 无法很好地处理 我正在使用 MapReader 解析包含 41 列的 CSV 文件 但是 我收到了 CSV 并且为我提供 CSV 的 Web 服务弄乱了一行 标题 行是一个制表符分
  • C# system.speech.recognition 替代词

    我目前正在使用 Microsoft Speech API 将语音听写为文本 但我真正需要的是程序可以使用的替代听写 我将其用于我的荣誉论文 为此我希望知道任何话语的前 10 种解释 2011 年 有人提出了一个非常相似 即使不完全一样 的问
  • 使用大型 txt 文件训练 Gensim word2vec

    我有一个像这样的大txt文件 150MG intrepid bumbling duo deliver good one better offering considerable cv freshly qualified private 我想
  • 为什么我的 SqlPackage DeployReport 返回空报告?

    我正在尝试使用 SqlPackage exe 运行 DeployReport 操作 但它返回一个空报告 这是我没有预料到的 因为我已经删除了多个视图和 SProc 它通过在 Visual Studio 中运行 Compare 操作来显示 根
  • 滚动视图内可扩展高度的 GridView

    我在滚动视图中使用 Expandableheightgrideview 我的问题是 当我尝试在 gridview 中添加内容时 内容未正确展开 当其高度存在时 它会显示 2 个滚动条 它应该是整个页面的一个通用滚动条 内容的底部是隐藏的要在
  • 连接关闭后继续 php 脚本

    我试图在页面 连接关闭后继续执行 PHP 脚本 用户将每隔 1 小时轮询一次脚本 我想返回一些 json 输出并希望在后台继续执行脚本 我使用的是共享主机 无法使用 cron 作业 这是我尝试过的 ob start ignore user
  • 得到两个日期之间的年份?

    我有 2 个日期 例如 2009 11 11 2002 11 11 我想得到他们之间的年份 7 我该怎么做 月份和日期始终相同 我不想使用 有没有合适的方法呢 我强烈建议使用 Sarfraz Ahmed 建议的功能 如果您想手动完成 并且没
  • 如何在 WildFly 20 上设置 Samesite cookie?

    我需要在 WildFly20 服务器响应上将相同的站点 cookie 属性设置为 严格 我需要通过服务器配置来完成此操作 有什么帮助吗 JMart 的答案是正确的 但需要将文件添加到您的网络应用程序 undertow handlers co
  • 使用 SwiftUI 使自定义 UIView 方面比例适合/填充时出现问题

    SwiftUI 中没有公共 API 来响应 View 协议的可调整大小修饰符 只有 SwiftUI 中的 Image 可以与 ressized 一起使用 自定义 UIView 如 GIF 的 UIView 现在无法调整大小 我使用 SDWe