底部视图不显示在 ToolbarController swift 3
Bottom View does not show in ToolbarController swift 3
我在 swift 中使用 cosmicmind 的 ToolbarController of Material Framework 3. 我在这个控制器中有两个 UIView,一个在屏幕顶部,另一个在屏幕底部。底部 UIView 不显示在控制器中。我认为它会向下移动到屏幕之外的视图。
这个问题是在真机测试时出现的。其他模拟器显示正确的行为。
import UIKit
import Material
class RootViewController: UIViewController {
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.white
prepareToolbar()
handleTopView()
handleBottomView()
}
func handleTopView() {
let topView = UIView()
topView.frame = CGRect(x: 0.00, y: 0.00, width: view.frame.size.width, height: 40.00)
topView.backgroundColor = UIColor.gray
view.addSubview(topView)
}
func handleBottomView() {
let bottomView = UIView()
bottomView.frame = CGRect(x: 0.00, y: self.view.frame.size.height, width: view.frame.size.width, height: 40.00)
bottomView.backgroundColor = UIColor.blue
view.addSubview(bottomView)
}
}
extension RootViewController {
fileprivate func prepareToolbar() {
guard let toolbar = toolbarController?.toolbar else {
return
}
toolbar.title = "Material"
toolbar.titleLabel.textColor = .white
toolbar.titleLabel.textAlignment = .left
toolbar.detail = "Build Beautiful Software"
toolbar.detailLabel.textColor = .white
toolbar.detailLabel.textAlignment = .left
}
}
问题是您在 viewDidLoad
函数中进行帧计算,而这些计算没有考虑 ToolbarController
计算,因为在 ToolbarController
的构造点 RootViewController
没有连接,是作为参数传入的,是在viewDidLoad
方法调用之后。您可以使用 Material
中的 Layout
API 来动态计算视图的位置,例如更新后的代码如下所示:
import UIKit
import Material
class RootViewController: UIViewController {
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.white
prepareToolbar()
handleTopView()
handleBottomView()
}
func handleTopView() {
let topView = UIView()
topView.backgroundColor = UIColor.gray
view.layout(topView).top().horizontally().height(40)
}
func handleBottomView() {
let bottomView = UIView()
bottomView.backgroundColor = UIColor.blue
view.layout(bottomView).bottom().horizontally().height(40)
}
}
extension RootViewController {
fileprivate func prepareToolbar() {
guard let toolbar = toolbarController?.toolbar else {
return
}
toolbar.title = "Material"
toolbar.titleLabel.textColor = .white
toolbar.titleLabel.textAlignment = .left
toolbar.detail = "Build Beautiful Software"
toolbar.detailLabel.textColor = .white
toolbar.detailLabel.textAlignment = .left
}
}
我测试过这适用于最新的 ToolbarController sample project。
祝一切顺利:)
我在 swift 中使用 cosmicmind 的 ToolbarController of Material Framework 3. 我在这个控制器中有两个 UIView,一个在屏幕顶部,另一个在屏幕底部。底部 UIView 不显示在控制器中。我认为它会向下移动到屏幕之外的视图。
这个问题是在真机测试时出现的。其他模拟器显示正确的行为。
import UIKit
import Material
class RootViewController: UIViewController {
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.white
prepareToolbar()
handleTopView()
handleBottomView()
}
func handleTopView() {
let topView = UIView()
topView.frame = CGRect(x: 0.00, y: 0.00, width: view.frame.size.width, height: 40.00)
topView.backgroundColor = UIColor.gray
view.addSubview(topView)
}
func handleBottomView() {
let bottomView = UIView()
bottomView.frame = CGRect(x: 0.00, y: self.view.frame.size.height, width: view.frame.size.width, height: 40.00)
bottomView.backgroundColor = UIColor.blue
view.addSubview(bottomView)
}
}
extension RootViewController {
fileprivate func prepareToolbar() {
guard let toolbar = toolbarController?.toolbar else {
return
}
toolbar.title = "Material"
toolbar.titleLabel.textColor = .white
toolbar.titleLabel.textAlignment = .left
toolbar.detail = "Build Beautiful Software"
toolbar.detailLabel.textColor = .white
toolbar.detailLabel.textAlignment = .left
}
}
问题是您在 viewDidLoad
函数中进行帧计算,而这些计算没有考虑 ToolbarController
计算,因为在 ToolbarController
的构造点 RootViewController
没有连接,是作为参数传入的,是在viewDidLoad
方法调用之后。您可以使用 Material
中的 Layout
API 来动态计算视图的位置,例如更新后的代码如下所示:
import UIKit
import Material
class RootViewController: UIViewController {
open override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = Color.white
prepareToolbar()
handleTopView()
handleBottomView()
}
func handleTopView() {
let topView = UIView()
topView.backgroundColor = UIColor.gray
view.layout(topView).top().horizontally().height(40)
}
func handleBottomView() {
let bottomView = UIView()
bottomView.backgroundColor = UIColor.blue
view.layout(bottomView).bottom().horizontally().height(40)
}
}
extension RootViewController {
fileprivate func prepareToolbar() {
guard let toolbar = toolbarController?.toolbar else {
return
}
toolbar.title = "Material"
toolbar.titleLabel.textColor = .white
toolbar.titleLabel.textAlignment = .left
toolbar.detail = "Build Beautiful Software"
toolbar.detailLabel.textColor = .white
toolbar.detailLabel.textAlignment = .left
}
}
我测试过这适用于最新的 ToolbarController sample project。
祝一切顺利:)