例如,我有一个简单的SwiftUI代码,它有一个SF符号,但没有任何填充.在这里,我使用.scaledToFit,因此图像将是边缘到边缘的(将来我将对其应用填充).

        VStack{
            Image(systemName: "drop")
                .resizable()
                .font(.largeTitle.weight(.ultraLight))
                .scaledToFit()
        }

屏幕截图显示右侧有一个小缺口:

Screenshot shows a small gap on the right side

使用额外的填充后,图像看起来仍然是关闭的.这一差距变小了,但仍然很明显.

我的预期是apply.scaledToFit实际上会zoom 图像以适应屏幕,然后我就可以使用填充了.

尽管有了填充物,这个问题仍然存在:

Though even with padding the issue persists.

我try 使用.aspectRatio(contentMode:.fit),以及不同的长宽比,希望它可以修复它.

同样的问题仍然存在,即使使用"Square"SF符号(这可能排除长宽比问题,因为正方形是1:1),尽管我使用.ImageScale(.Large)修复了Square的问题.

不带.ImageScale(.Large)的正方形:

Square without .imageScale(.large)

带.ImageScale(.Large)的正方形:

Square with .imageScale(.large)

推荐答案

似乎当你使用一种指定的字体大小时,它有时起作用,有时不起作用.通常,可以找到一种起作用的命名大小,但只能在特定的文本大小设置下(在辅助功能设置中).

It works more reliably if you use 100 font with a specific fixed size.这种方法似乎对不同的文本大小设置更有抵抗力.

下面的截图是Xcode 15.2在iPhone 15模拟器上和iOS 17.2上的截图.

"Drop"图像的字体大小为15(对应于默认文本大小为.subheadline):

Image(systemName: "drop")
    .resizable()
    .font(.system(size: 15).weight(.ultraLight))
    .scaledToFit()

Screenshot

对于正方形图片,字体大小需要为16(对应于默认文本大小为.callout):

Image(systemName: "square")
    .resizable()
    .font(.system(size: 16).weight(.ultraLight))
    .scaledToFit()

Screenshot

因此,这表明,可能会找到一种根据具体情况工作的字体大小.

Swift相关问答推荐

什么是Swift Concurrency中任务组的正常退出

如何为任务扩展的泛型静态函数获得自动类型推理

在visionOS RealityView中使用.GenerateText时,未显示Reality Composer Promaterial 纹理

为什么ClosedRange<;Int&>包含的速度比预期慢340万倍?

如何在SwiftUI中做出适当的曲线?

如何避免切换视图递归onChange调用SwiftUI

SwiftUI-如何使用剩余时间制作倒计时计时器

除法中如果除以完全因数需要更长时间吗?

(Swift)混淆了函数内 for-in 循环的返回值和循环后(函数内)的返回值)

如何在 macOS/AppKit 的窗口选项卡上接受拖动项目的放置?

ScreenCaptureKit/CVPixelBuffer 格式产生意外结果

Swift 包管理器 Package.resolved 文件末尾的版本是什么意思?

按钮图像不会立即刷新

在 SwiftUI 中操作绑定变量

VStack SwiftUI 中的动态内容高度

无法使用锚激活约束

Swift中switch 盒的详尽条件

在 Swift for iOS 中沿圆形路径绘制文本

如何在Swift中找出字母是字母数字还是数字

Swift中方法的弃用和其他属性,如何?