我正在尝试学习如何以编程方式创建应用程序的UI。 我向应用程序添加了一个带有代码的导航控制器,这是代码:
AppDelegate:
var window: UIWindow?
var navigationController: UINavigationController?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
if let window = window{
let mainVC = MainVC()
navigationController = UINavigationController(rootViewController: mainVC)
window.rootViewController = navigationController
window.makeKeyAndVisible()
}
return true
}
这是我的mainVC:
class MainVC: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
navigationController?.navigationBar.isTranslucent = false
navigationController?.navigationBar.barTintColor = UIColor.blue
navigationController?.navigationBar.prefersLargeTitles = true
navigationItem.title = "Hello"
setupTextBox()
// Do any additional setup after loading the view, typically from a nib.
}
let textBox: UITextField = {
var tBox = UITextField(frame: CGRect(x: 100, y: 100, width: 200, height: 30))
tBox.placeholder = "Please Enter Name"
tBox.textAlignment = .center
tBox.borderStyle = .roundedRect
tBox.backgroundColor = UIColor.red
return tBox
}()
private func setupTextBox(){
view.addSubview(textBox)
}
}
导航栏确实出现了,但它很大,无法找到应有的查看方式。 这是导航栏的图像:
我在做什么错了?
答案 0 :(得分:3)
是由于navigationController?.navigationBar.prefersLargeTitles = true
你过得很好
只需了解这是具有最高安全区域+大标题的iPhone X
答案 1 :(得分:1)
您没有做错任何事情。这就是UINavigationBar
在iPhone X,iPhone XR和iPhone XS上的外观。所有这些设备都带有“ X”斜角。
这是另一个有用的SO帖子:What is the top bar height of iPhone X?
答案 2 :(得分:1)
大型导航栏是一种导航栏样式,当设置了preferredLargeTitles时使用。所以这行导致您的问题
navigationController?.navigationBar.prefersLargeTitles = true
将其更改为false,您将获得一个较小的*导航栏
注意:*由于iPhone X系列设备上的“缺口”,它仍会比正常情况大