2

我正在尝试在 Swift 中将图像切成 9 块。我收到此错误:

'CGFloat' 不能转换为 'Double'

当我放入ij放入两个变量时出现此错误。

以下是用于剪切图像的部分代码。

for i in 1...3
    {
        for j in 1...3
        {
            var intWidth = ( i * (sizeOfImage.width/3.0))
            var fltHeight = ( j * (sizeOfImage.height/3.0))
        var portion = CGRectMake(intWidth,fltHeight, sizeOfImage.width/3.0, sizeOfImage.height/3.0);
            .
            .
      "Code goes on"

问题是什么?

4

2 回答 2

3

在 swift 中没有数字数据类型的隐式转换,并且您正在混合整数和浮点数。您必须将索引显式转换为CGFloats:

var intWidth = ( CGFloat(i) * (sizeOfImage.width/3.0))
var fltHeight = ( CGFloat(j) * (sizeOfImage.height/3.0))

正如在 swift 中经常发生的那样,错误消息具有误导性 - 它说:

'CGFloat' 不能转换为 'Double'

而我期望:

'CGFloat' 不能转换为 'Int'

于 2014-10-13T09:07:48.433 回答
0

这是 Swift 5.5(自动转换)中的非首发。我们可以将CGFloatDouble可互换地传递给接受其中任何一种类型的函数。

于 2021-06-18T19:44:42.427 回答