如何以编程方式将UIToolbar添加到iOS应用程序?

Ger*_*Ger 45 uitoolbar ios

似乎无法找到问题标题所描述的教程.我想了解UIToolbar需要声明的位置以及如何将其放到我的视图层.

Aug*_*aas 77

UIToolbar是一个子类UIView,因此您的问题的简短答案是:就像任何其他视图一样.

具体来说,这是如何以编程方式创建工具栏的示例.此代码段中的上下文是viewDidLoad视图控制器.

UIToolbar *toolbar = [[UIToolbar alloc] init];
toolbar.frame = CGRectMake(0, 0, self.view.frame.size.width, 44);
NSMutableArray *items = [[NSMutableArray alloc] init];
[items addObject:[[[UIBarButtonItem alloc] initWith....] autorelease]];
[toolbar setItems:items animated:NO];
[items release];
[self.view addSubview:toolbar];
[toolbar release];
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅UIToolbarUIBarButtonItem文档.

  • @MicRO可能现在已经弄明白了,但是:`UIBarButtonItem*flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];` (7认同)

Ank*_*ain 74

如果您正在使用,UINavigationController则默认情况下工具栏会附带它.

您可以使用以下代码行添加它:

self.navigationController.toolbarHidden = NO;
Run Code Online (Sandbox Code Playgroud)

要向工具栏添加按钮,您可以使用以下代码:

UIBarButtonItem *flexibleItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:self action:nil];
UIBarButtonItem *item1 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAdd target:self action:nil];
UIBarButtonItem *item2 = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action:nil];
Run Code Online (Sandbox Code Playgroud)

flexibleItem 用于保持我们在上面创建的两个按钮之间的适当距离.

现在,您可以添加这三个项目,以便在视图中显示它们.

NSArray *items = [NSArray arrayWithObjects:item1, flexibleItem, item2, nil];   
self.toolbarItems = items;
Run Code Online (Sandbox Code Playgroud)

我希望这个对你有用.


Jac*_*ack 7

iOS 11+ SWIFT 4 + Xcode 9 +约束

适用于风景+人像 在此输入图像描述

肖像

    override func viewDidLoad() {
        super.viewDidLoad()
        print(UIApplication.shared.statusBarFrame.height)//44 for iPhone x, 20 for other iPhones
        navigationController?.navigationBar.barTintColor = .red


        let toolBar = UIToolbar()
        var items = [UIBarButtonItem]()
        items.append(
            UIBarButtonItem(barButtonSystemItem: .save, target: nil, action: nil)
        )
        items.append(
            UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(tapsOnAdd))
        )
        toolBar.setItems(items, animated: true)
        toolBar.tintColor = .red
        view.addSubview(toolBar)

        toolBar.translatesAutoresizingMaskIntoConstraints = false


        if #available(iOS 11.0, *) {
            let guide = self.view.safeAreaLayoutGuide
            toolBar.trailingAnchor.constraint(equalTo: guide.trailingAnchor).isActive = true
            toolBar.leadingAnchor.constraint(equalTo: guide.leadingAnchor).isActive = true
            toolBar.bottomAnchor.constraint(equalTo: guide.bottomAnchor).isActive = true
            toolBar.heightAnchor.constraint(equalToConstant: 44).isActive = true

        }
        else {
            NSLayoutConstraint(item: toolBar, attribute: .bottom, relatedBy: .equal, toItem: view, attribute: .bottom, multiplier: 1.0, constant: 0).isActive = true
            NSLayoutConstraint(item: toolBar, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1.0, constant: 0).isActive = true
            NSLayoutConstraint(item: toolBar, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1.0, constant: 0).isActive = true

            toolBar.heightAnchor.constraint(equalToConstant: 44).isActive = true
        }

    }
Run Code Online (Sandbox Code Playgroud)

  • @GSerjo 约束必须**各自[safeAreaLayoutGuide](https://developer.apple.com/documentation/uikit/uiview/2891102-safearealayoutguide)**,否则**toolBar将与home-indicator重叠**。 (2认同)