iOS ViewController 使用与来自 Xcode Interface Builder 的设备相同的边界
iOS ViewController bounds using the same bounds as device from Xcode Interface Builder
我正在免费设计一个应用故事板,我在 App Delegate 中有这段代码,它设置了 window 的根视图控制器:
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 天了,所以我终于放弃并将其发布在 Whosebug 上。
非常感谢你。
您是否在 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!
])
}
我正在免费设计一个应用故事板,我在 App Delegate 中有这段代码,它设置了 window 的根视图控制器:
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 天了,所以我终于放弃并将其发布在 Whosebug 上。
非常感谢你。
您是否在 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!
])
}