我不想使用UINavigationController
. 我想用一个单独的UIToolbar
来代替。
要求:
- 始终在屏幕上可见
- 应该保持在底部的位置
UIView
(如工具栏UINavigationController
) - 应该适应它的宽度(例如旋转后)
- 没有 IB/Storyboard 解决方案
- 另外:不要隐藏
UITableView
我想为此使用自动布局。尽管我的代码是用 C# 编写的,但您始终可以为 Objective-C 提供解决方案。
这适用于viewDidLoad
a UIViewController
,但不适用于viewDidLoad
a UITableViewController
:
UIView toolbar = new UIView ();
toolbar.BackgroundColor = UIColor.Red;
toolbar.TranslatesAutoresizingMaskIntoConstraints = false;
View.AddSubview (toolbar);
NSLayoutConstraint toolbarBottom = NSLayoutConstraint.Create (toolbar, NSLayoutAttribute.Bottom, NSLayoutRelation.Equal, BottomLayoutGuide, NSLayoutAttribute.Top, 1, 0);
NSLayoutConstraint toolbarLeft = NSLayoutConstraint.Create (toolbar, NSLayoutAttribute.Left, NSLayoutRelation.Equal, View, NSLayoutAttribute.Left, 1, 0);
NSLayoutConstraint toolbarRight = NSLayoutConstraint.Create (toolbar, NSLayoutAttribute.Right, NSLayoutRelation.Equal, View, NSLayoutAttribute.Right, 1, 0);
NSLayoutConstraint toolbarHeight = NSLayoutConstraint.Create (toolbar, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, 40);
this.View.AddConstraints (new NSLayoutConstraint[] { toolbarBottom, toolbarLeft, toolbarRight, toolbarHeight });
出于测试原因,我使用 aUIView
而不是UIToolbar
. 结果非常相似。上显示UIViewController
红色视图。在一个UITableViewController
它根本没有出现。
我在不使用自动布局的情况下进行了另一项测试:
RectangleF toolbarFrame = new RectangleF (0, this.View.Bounds.Height - 44, this.View.Bounds.Width, 44);
UIView toolbar = new UIView (toolbarFrame);
toolbar.BackgroundColor = UIColor.Red;
View.AddSubview (toolbar);
此处UIView
显示了,但它位于表格视图中的固定位置,并且分隔线穿过。不是我想要的,但似乎可以将一个UIToolbar
放在UITableView
...