ScaledToFit 是一个小型的库,提供函数来放大或缩小一个矩形的大小,使其能够适应另一个矩形的大小。缩放过程中会保持宽高比不变。
该 SPM 包包含一个示例 SwiftUI 项目,其中还包含可视化测试,用于展示缩放的工作方式,并可用于验证其正确性。
以下截图展示了缩放的实际效果
缩放逻辑本身在泛型 Size
类型中可用,它适用于任何 FloatingPoint 类型的 (width, height) 元组。因此,任何代码都可以使用它,无论大小或矩形的实际类型如何。
let scaledSize = Size.scaledToFit(orinigalSize: (10, 15), size: (20, 30))
对于 CGSize 类型,还有一个方便的扩展,可用于 Apple 的所有平台 SDK。
let originalSize = CGSize(width: 10, height: 15)
let containerSize = CGSize(width: 20, height: 30)
let scaledSize = originalSize.scaledToFit(size: containerSize)
如果只想缩小,请使用 scaledDownToFit
let scaledSize = originalSize.scaledDownToFit(maxSize: containerSize)
新的尺寸将是原始尺寸的较小版本。如果原始尺寸完全适合提供的容器尺寸,该函数将返回 nil
,表明不需要缩放。在这种情况下,您可以回退到原始尺寸。
let scaledSize = originalSize.scaledDownToFit(maxSize: containerSize) ?? originalSize
类似地,如果只想放大,请使用 scaledUpToFit
。新的尺寸将是原始尺寸的较大版本,如果不需要缩放,则返回 nil
。
使用此 URL 作为依赖项:https://github.com/WilhelmOks/ScaledToFit.git