【问题标题】:insetBy returns Inf in CGRectinsetBy 在 CGRect 中返回 Inf
【发布时间】:2016-10-19 10:33:47
【问题描述】:

我使用的是insetByCGGeometry,但它返回inf 作为xy 的值。

CG几何

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)

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

【问题讨论】:

  • 负高度是什么意思? :)
  • 我错了,因为高度计算是动态的并且取决于其他变量。所以错过了。谢谢

标签: ios objective-c swift geometry core-graphics


【解决方案1】:

否定的width/height 没有意义,它显然会破坏 CGRect 计算。

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

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

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

【讨论】:

  • 实际上高度值是负数。谢谢
  • @technerd 事实上,如果你之后用正值插入那个维度,传递 0 并不能解决问题。查看更新的答案
猜你喜欢
  • 1970-01-01
  • 2020-01-24
  • 2013-09-25
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 2020-06-14
  • 1970-01-01
相关资源
最近更新 更多