Xcode / Swift:应用程序正在使用界面构建器框架而不是模拟器框架

时间:2017-02-26 11:13:40

标签: swift xcode

我正在用一块砖块制作突破游戏(斯坦福CS193p)。每块砖的宽度都是let width = frame.size.width / CGFloat(bricksPerRow),一切正常,但只有当Interface Builder设置为与模拟器相同的设备时!如果它们不同,用于计算宽度的帧始终是我在IB中选择的设备的大小,而不是在模拟器中运行的设备的大小。

例如,如果我让Interface Builder显示iPhone 7,但我在iPhone SE上运行模拟器,那么这些块对于屏幕来说太大了。我知道在IB和模拟器上使用不同的设备并不是一个很好的理由,但是当我第一次运行应用程序时,在这些条件下偶然/偶然,并且,你知道,不应该自动布局框架是设备的大小?

这是砖块尺寸的代码,有一些打印用于调试。打印输出确认无论我运行什么设备,框架都是相同的。同样,对于它使用的帧,一切都被正确绘制,它只是使用错误的帧。

var brickSize: CGSize {
    print(frame.size)
    let width = frame.size.width / CGFloat(bricksPerRow)
    let height = width * 2/3
    print("Calculated width: \(frame.size.width / CGFloat(bricksPerRow))")
    print("'Actual' width: \(width)")
    return CGSize(width: width, height: height)
}

这是在我的视图的代码中,在故事板中,视图的约束似乎设置正确(尾随并引导到superview)。

0 个答案:

没有答案