gpt4 book ai didi

swift - 无法将 int 类型的值转换为预期参数类型 'CGfloat'

转载 作者:行者123 更新时间:2023-11-28 12:43:36 25 4
gpt4 key购买 nike

我正在尝试以编程方式在我的应用程序中创建 subview ,基本上我是 swift 的初学者,而我正在尝试创建 9 个 subview 。我收到错误消息“无法将‘int’类型的值转换为预期参数类型‘CGfloat’”CGFloat 值为 A 和 B

import Foundation
import UIKit

@IBDesignable
class Subview: UIView {

@IBInspectable var view1 : UIView = UIView() {
didSet {
var A:CGFloat = 0
var B:CGFloat = 0
for A in 1...3 {
for B in 1...3 {
view1.frame = CGRectMake(A,B, 100, 100)
view1.backgroundColor = UIColor.blueColor()
self.addSubview(view1)
}
}
}
}

}

最佳答案

您在循环中重载了具有相同名称但Int 类型变量的 AB 变量(阅读更多关于 for in循环)。您不需要在将变量用作 for in 中的元素之前声明变量,它们是在本地循环范围内隐式创建的,具有您集合元素的类型(同样,Int在你的情况下)。 CGRectMake(_:_:_:_:) 期待你的CGFloat;正如@Martin R 指出的那样,您最好使用 CGRect(x:y:width:height:)。此代码将解决转换类型问题:

didSet {
for A in 1...3 {
for B in 1...3 {
view1.frame = CGRect(x: A, y: B, width: 100, height: 100)
view1.backgroundColor = UIColor.blueColor()
self.addSubview(view1)
}
}
}

但它还有其他逻辑问题。 UIView (view1) 的实例只能同时添加到一个 View 层次结构中。因此,事实上,您的 didSet 中的所有代码都将与此代码具有相同的结果:

didSet {
view1.frame = CGRect(x: 3, y: 3, width: 100, height: 100)
view1.backgroundColor = UIColor.blueColor()
self.addSubview(view1)
}

另请注意,didSet 观察器不会在初始化步骤中调用,因此如果您不重新分配 view1 属性,此代码将永远不会执行。

关于swift - 无法将 int 类型的值转换为预期参数类型 'CGfloat',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38743354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com