Ios 错误消息:“Int”类型的值没有成员“frame”
我正在编写关于用swift制作益智游戏的教程,我一直在第16行收到这个错误消息 “Int”类型的值没有成员“frame” 我尝试检查其他堆栈溢出线程,似乎这可能与我使用Swift 4有关?如果是这种情况,我该如何纠正Ios 错误消息:“Int”类型的值没有成员“frame”,ios,swift,Ios,Swift,我正在编写关于用swift制作益智游戏的教程,我一直在第16行收到这个错误消息 “Int”类型的值没有成员“frame” 我尝试检查其他堆栈溢出线程,似乎这可能与我使用Swift 4有关?如果是这种情况,我该如何纠正 import UIKit class ViewController: UIViewController { @IBOutlet weak var gameView: UIView! @IBOutlet weak var timerLabel: UILabel
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var gameView: UIView!
@IBOutlet weak var timerLabel: UILabel!
var gameViewWidth: Int!
var blockWidth: Int!
override func viewDidLoad() {
super.viewDidLoad()
gameViewWidth = Int( gameViewWidth.frame.size.width )
blockWidth = gameViewWidth / 4
let blockFrame: CGRect = CGRect(x: 0, y: 0, width: 200, height: 200)
let block: UILabel = UILabel(frame: blockFrame)
block.backgroundColor = UIColor.darkGray
gameView.addSubview(block)
}
@IBAction func resetAction(_ sender: Any) {
}
}
这一行:
gameViewWidth = Int( gameViewWidth.frame.size.width )
需要:
gameViewWidth = Int( gameView.frame.size.width )
这是您想要的gameView的宽度。或者只是看看。您想要哪个视图的宽度还不是100%清楚
无论如何,viewDidLoad都不是该代码的好位置,因为视图的大小尚未确定。太早了
取决于视图大小的代码应该在viewDidLayoutSubviews中,因为视图的大小会随着时间的推移而变化,例如当设备旋转或用户接听电话并在通话时切换回应用程序时,等等除了将gameViewWidth=Int gameViewWidth.frame.size.width更正为gameViewWidth=Int gameView.frame.size.width之外,您应该避免为您的变量使用隐式展开。只需声明为var gameViewWidth=0,稍后将在ViewWillLayoutSubView中将其设置为正确的值