inputBy returns Inf in CGRect

insetBy returns Inf in CGRect

我正在使用 CGGeometryinsetBy,但它 returns inf 作为 xy 的值。

CGGeometry

public func insetBy(dx: CGFloat, dy: CGFloat) -> CGRect

下面是我的代码输出:

    let frame = CGRect(x: xOffset[row], y: yOffset[row], width: width, height: height)
    print(frame)     //(0.0, 0.0, 54.0, -3.0)

    let insetFrame = frame.insetBy(dx: 4.0, dy: 2.0)
    print(insetFrame)   //(inf, inf, 0.0, 0.0)

此帧导致应用程序崩溃。 任何帮助都将不胜感激。

width/height 没有意义,它显然破坏了 CGRect 计算。

只是不要对 widthheight 使用负值,你会没事的:

let frame = CGRect(x: xOffset[row], y: yOffset[row], width: max(8, width), height: max(4, height))

您可以定义一些 maxInsetXmaxInsetY 常量,以确保您的初始帧在两个维度上都不会小于 2*maxInset