iOS ViewController 使用与 Xcode Interface Builder 中的设备相同的边界
Posted
技术标签:
【中文标题】iOS ViewController 使用与 Xcode Interface Builder 中的设备相同的边界【英文标题】:iOS ViewController bounds using the same bounds as device from 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 天了,所以我终于放弃并将其发布在 *** 上。
非常感谢您。
【问题讨论】:
【参考方案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!
])
【讨论】:
你是救生员! 乐于助人! ;)以上是关于iOS ViewController 使用与 Xcode Interface Builder 中的设备相同的边界的主要内容,如果未能解决你的问题,请参考以下文章
与 Facebook Graph API /user-id/feed (iOS) 一起使用的 viewController
iOS——何时创建子 ViewController 与 UIView 子类?
iOS 将storybord中的视图与viewcontroller相关联
ios viewcontroller 视图图与可变数组一起使用