inputBy returns Inf in CGRect
insetBy returns Inf in CGRect
我正在使用 CGGeometry
的 insetBy
,但它 returns inf
作为 x
和 y
的值。
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 计算。
只是不要对 width
和 height
使用负值,你会没事的:
let frame = CGRect(x: xOffset[row], y: yOffset[row], width: max(8, width), height: max(4, height))
您可以定义一些 maxInsetX
和 maxInsetY
常量,以确保您的初始帧在两个维度上都不会小于 2*maxInset
。
我正在使用 CGGeometry
的 insetBy
,但它 returns inf
作为 x
和 y
的值。
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 计算。
只是不要对 width
和 height
使用负值,你会没事的:
let frame = CGRect(x: xOffset[row], y: yOffset[row], width: max(8, width), height: max(4, height))
您可以定义一些 maxInsetX
和 maxInsetY
常量,以确保您的初始帧在两个维度上都不会小于 2*maxInset
。