有没有办法使用视觉格式语言将视图限制在导航栏的底部?
Is there a way to use Visual Format Language to constrain a view to the bottom of a navigation bar?
我目前正在尝试将视图垂直放置在导航栏的正下方。但是,我正在尝试使用可视格式语言来执行此操作。
我基本上有 3 个视图:我们称它们为 a、b、c
我当前执行此操作的代码是:
@"V:|-dist-[a][b][c]|"
我基本上必须将 "dist" 设置为导航栏的高度。否则子视图 "a" 将位于导航栏上方,因为父视图已进入安全区域。
尽管我基本上可以使用这个解决方案,但问题在于针对导航栏大小不同的不同屏幕进行设计。我尝试抓取导航栏高度:
CGFloat topbarHeight = self.navigationController.navigationBar.frame.size.height;
但是 returns:
错误:在 'id'
类型的对象上找不到 属性 'navigationBar'
我假设这是因为视图尚未加载?它无法识别导航栏?理想情况下,如果有某种符号代表导航栏默认区域,我会很高兴。类似于“|”代表视觉格式语言中的超级视图的符号。
如有任何帮助,我们将不胜感激。
如果您正在设置 edgesForExtendedLayout = []
,您可以将顶部约束设置为 UIViewController.view,这将使 UIViewController
的视图保持在导航栏
的正下方
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.edgesForExtendedLayout = []
let view = UIView(frame: .zero)
view.backgroundColor = UIColor.red
view.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(view)
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[view]-0-|", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[view(50)]", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
}
结果
我目前正在尝试将视图垂直放置在导航栏的正下方。但是,我正在尝试使用可视格式语言来执行此操作。
我基本上有 3 个视图:我们称它们为 a、b、c
我当前执行此操作的代码是:
@"V:|-dist-[a][b][c]|"
我基本上必须将 "dist" 设置为导航栏的高度。否则子视图 "a" 将位于导航栏上方,因为父视图已进入安全区域。
尽管我基本上可以使用这个解决方案,但问题在于针对导航栏大小不同的不同屏幕进行设计。我尝试抓取导航栏高度:
CGFloat topbarHeight = self.navigationController.navigationBar.frame.size.height;
但是 returns:
错误:在 'id'
类型的对象上找不到 属性 'navigationBar'我假设这是因为视图尚未加载?它无法识别导航栏?理想情况下,如果有某种符号代表导航栏默认区域,我会很高兴。类似于“|”代表视觉格式语言中的超级视图的符号。
如有任何帮助,我们将不胜感激。
如果您正在设置 edgesForExtendedLayout = []
,您可以将顶部约束设置为 UIViewController.view,这将使 UIViewController
的视图保持在导航栏
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.edgesForExtendedLayout = []
let view = UIView(frame: .zero)
view.backgroundColor = UIColor.red
view.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(view)
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[view]-0-|", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
self.view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|-0-[view(50)]", options: NSLayoutConstraint.FormatOptions(rawValue: 0), metrics: nil, views: ["view":view]));
}
结果