【问题标题】:Why is my CGPoint returning other characters?为什么我的 CGPoint 返回其他字符?
【发布时间】:2023-04-05 21:14:01
【问题描述】:

您好,我正在尝试在自定义 UIControl 的拇指中心添加一个标签。我需要找到拇指的中心。

我有一个函数,我想将拇指中心返回为 CGPoint。

该函数返回的坐标非常奇怪,如下所示:

thumb center coordinates: (5.534284385e-315, 5.356796015e-315)

为什么我会得到这些值? UIControl 有没有办法像 UISlider 一样返回 thumbRect?谢谢!!

open func getThumbCenterRect() -> CGPoint {

        return thumbCenter
    }



  fileprivate var thumbCenter: CGPoint {

            var thumbCenter = viewCenter
            let angle = rtlAwareAngleRadians(thumbAngle)
            thumbCenter.x += CGFloat(cos(angle)) * controlRadius
            thumbCenter.y += CGFloat(sin(angle)) * controlRadius

            return thumbCenter
        }

@IBAction func onSlideChange(_ sender: MTCircularSlider) {

        let thumbCenter = knobWithLabelView.getThumbCenterRect()
        print("thumb centre coordinates: \(thumbCenter)")

    }

输出:

thumb coordinates: (5.534284385e-315, 5.356796015e-315)

【问题讨论】:

  • 你能解释一下你所说的“拇指”是什么意思吗? “viewCenter”在哪里定义?
  • 使用调试器单步调试代码。查看每一行的值。找出你在哪里得到了一个意想不到的价值。由于您没有告诉我们涉及的任何变量,因此很难提供帮助。
  • 您可能还希望避免将局部变量命名为与其所在的计算属性的名称相同。这会造成混淆。

标签: ios swift uislider cgpoint uicontrol


【解决方案1】:

这是科学记数法。 5.534284385e-315 表示5.534284385 * 10^-315,这是一个非常小数字(0.,后跟 314 个零,然后是 55342...`)。

换句话说,它是一个非常小的数字,它非常接近于 0,但并不完全。最有可能的是,您需要进行一些舍入以使值与更合理的可接受值对齐。

【讨论】:

    猜你喜欢
    • 2015-04-01
    • 2023-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-06
    • 2013-03-10
    • 1970-01-01
    相关资源
    最近更新 更多