Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/112.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 错误消息:“Int”类型的值没有成员“frame”_Ios_Swift - Fatal编程技术网

Ios 错误消息:“Int”类型的值没有成员“frame”

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

我正在编写关于用swift制作益智游戏的教程,我一直在第16行收到这个错误消息

“Int”类型的值没有成员“frame”

我尝试检查其他堆栈溢出线程,似乎这可能与我使用Swift 4有关?如果是这种情况,我该如何纠正

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中将其设置为正确的值