【问题标题】:iOS ViewController bounds using the same bounds as device from Xcode Interface BuilderiOS ViewController 使用与 Xcode Interface Builder 中的设备相同的边界
【发布时间】:2017-08-10 01:49:02
【问题描述】:

我正在设计一个免费的应用故事板,我在设置窗口的根视图控制器的 App Delegate 中有这段代码:

    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!
])

正如您在屏幕截图中所见,渐变只是重复自身。我有一些元素,例如按钮,随着渐变的重复,它们也被剪掉了。所以我在 Xcode IB 中将 Xib 设备更改为 iPad,渐变仍然重复,但没有那么多。我已经处理了 3 天了,所以我终于放弃并将其发布在 StackOverflow 上。

非常感谢您。

【问题讨论】:

    标签: ios swift xcode ipad bounds


    【解决方案1】:

    您是否在viewDidLoad() 中设置渐变色?

    就是这样,self.view.bounds 仍然是您故事板视图中的大小,您需要等待才能设置渐变颜色。

    viewDidAppear(_:) 至少会迟到 1 帧,所以我的建议是在 viewDidLayoutSubviews() 内调用它,但请记住它可能会被多次调用:

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

    【讨论】:

    • 你是救生员!
    • 乐于助人! ;)
    猜你喜欢
    • 2015-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-07-23
    • 2012-12-06
    • 2010-12-03
    • 2013-02-15
    • 1970-01-01
    • 2018-04-05
    相关资源
    最近更新 更多