its*_*aaz 8 iphone uikit ios swift
我们正在创建一个应用程序,它需要通过导航和标签视图控制器连接的不同视图的不同标题.初始视图具有图像作为标题.第二个视图将文本作为标题,第三个视图也将文本作为标题.
我们使用故事板来构建此应用程序,这是控制器的层次结构.
Navigation Controller --> Tab Bar Controller --> View Controller 1, View Controller 2, View Controller 3
Run Code Online (Sandbox Code Playgroud)
以下是我们用于在第一个视图控制器上显示图像的代码:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
let titleView = UIImageView()
titleView.contentMode = .scaleAspectFit
titleView.image = UIImage(named: "logo_white_thin")
self.parent?.navigationItem.titleView = titleView
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
}
Run Code Online (Sandbox Code Playgroud)
这是我们用来显示文本作为其他两个视图控制器的标题的代码.
override func viewWillAppear(_ animated: Bool) {
guard let uid = Auth.auth().currentUser?.uid else {return}
guard let username = users[uid]?.username else {return}
self.parent?.navigationItem.titleView = title(text: username)
self.parent?.navigationController?.navigationBar.isHidden = false
self.navigationController?.navigationBar.isHidden = false
print("Setting navigation bar title to ", username)
}
Run Code Online (Sandbox Code Playgroud)
该标题的功能是内置返回一个标签的扩展:
func title(text: String) -> UILabel {
let label = UILabel()
label.text = text
label.textColor = UIColor.white
label.font = UIFont.boldSystemFont(ofSize: label.font.pointSize)
return label
}
Run Code Online (Sandbox Code Playgroud)
现在问题是,当我们在iOS 11上测试我们的应用程序时,导航控制器工作正常并且一切都很好.当我们在iOS 10上测试我们的应用程序时,导航控制器中的图像和文本会神奇地消失.知道为什么会这样吗?
这是一个什么样的图像: 问题的图片.在左侧,没有标题显示(IOS 10),右侧标题显示(IOS 11)
我正在使用Swift 4运行最新版本的Xcode.提前感谢您的帮助.
您需要设置标签的框架。titleView是UIView的子类。因此,它没有固有的contentSize。但是,iOS 11为提供了固有的内容大小titleView。因此,您无需设置其框架。检查此答案。
iOS 11 navigationItem.titleView宽度未设置
func title(text: String) -> UILabel {
let label = UILabel()
// add frame
label.frame = CGRect(x: 0, y: 0, width: 32, height: 32)
label.text = text
label.textColor = UIColor.black
label.font = UIFont.boldSystemFont(ofSize: label.font.pointSize)
return label
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1043 次 |
| 最近记录: |