iOS ViewController边界使用与Xcode Interface Builder中的设备相同的边界

iOS ViewController边界使用与Xcode Interface Builder中的设备相同的边界,ios,swift,xcode,ipad,bounds,Ios,Swift,Xcode,Ipad,Bounds,我正在免费设计一个应用程序情节提要,我在应用程序委托中有以下代码,用于设置窗口的根视图控制器: window = UIWindow(frame: UIScreen.main.bounds) let loginVC = LoginViewController() let navigationController = UINavigationController(rootViewController: loginVC) self.window!.rootViewC

我正在免费设计一个应用程序情节提要,我在应用程序委托中有以下代码,用于设置窗口的根视图控制器:

    window = UIWindow(frame: UIScreen.main.bounds)

    let loginVC = LoginViewController()
    let navigationController = UINavigationController(rootViewController: loginVC)

    self.window!.rootViewController = navigationController
    self.window!.makeKeyAndVisible()
但由于某些原因,当登录视图控制器加载时,它看起来如下所示:

我使用视图控制器边界的框架设置渐变,如下所示:

self.view.backgroundColor = UIColor(gradientStyle: .diagonal, withFrame: self.view.bounds, andColors: [
            firstColor!,
            secondColor!
])
正如你在截图中所看到的,渐变只是重复自身。我有一些元素,比如按钮,随着渐变的不断重复,它们也被剪掉了。所以我把Xib设备换成了Xcode IB中的iPad,梯度仍然在重复,但没有那么多。我已经处理这个问题3天了,所以我终于放弃了,把它发布在StackOverflow上


非常感谢您的光临。

您是否在
viewdiload()中设置渐变颜色

在这种情况下,
self.view.bounds
仍然是故事板视图中的大小,在设置渐变颜色之前需要等待

viewdide(:)
将至少晚1帧,因此我的建议是在
viewdidelayoutsubviews()内调用它。
但请记住,它可能会被多次调用:

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    self.view.backgroundColor = UIColor(gradientStyle: .diagonal, withFrame: self.view.bounds, andColors: [
        firstColor!,
        secondColor!
    ])
}

你是个救生员!很乐意帮忙!;)