Mik*_*e H 2 layout uinavigationbar uinavigationcontroller ios swift
我正在以编程方式为我的应用程序设计一个注册页面视图,用户可以在其中输入自己的图像和一些信息。
在我的LoginController中,创建一个UINavigationController并带有我的RegisterController的rootviewcontroller,然后将其显示。
func handleRegisterButtonClicked() {
let registerController = RegisterController()
let navController = UINavigationController(rootViewController: registerController)
present(navController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
现在,我为他们添加了图片,以供单击以上传他们的照片。我希望此图片始终在导航栏下方显示30px,但要重叠在导航栏下方,从屏幕顶部显示30px:
class RegisterController: UIViewController {
...
func setupViews() {
profilePic.topAnchor.constraint(equalTo: view.topAnchor, constant: 30).isActive = true
}
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以向profilePic添加约束,以便将其锚定在导航栏的底部(纵向和横向)?
而不是view.topAnchor尝试topLayoutGuide.bottomAnchor。这应该将其固定在导航栏的底部(视图控制器的“顶部布局指南”)。
func setupViews() {
profilePic.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: 30).isActive = true
}
Run Code Online (Sandbox Code Playgroud)
在iOS 11中topLayoutGuide,bottomLayoutGuide不推荐使用,而推荐使用safeAreaLayoutGuide(这是UIView属性,而不是UIViewController)。
如果您的应用程序支持iOS 11,则应执行以下操作:
func setupViews() {
if #available(iOS 11.0, *) {
profilePic.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 30).isActive = true
} else {
profilePic.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: 30).isActive = true
}
}
Run Code Online (Sandbox Code Playgroud)
如果/当您的应用仅支持iOS 11或更高版本时,您可以删除条件可用性检查并仅使用该safeAreaLayoutGuide版本。
| 归档时间: |
|
| 查看次数: |
4067 次 |
| 最近记录: |