How to add a UIToolbar programmatically to an iOS app? How to add a UIToolbar programmatically to an iOS app? ios ios

How to add a UIToolbar programmatically to an iOS app?


UIToolbar is a subclass of UIView, so the short answer to your question is: just like any other view.

Specifically, this is an example of how to programmatically create a toolbar. The context in this snippet is viewDidLoad of a view controller.

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];

See UIToolbar and UIBarButtonItem documentation for details.


If you're using UINavigationController then the toolbar comes with it by default.

You can add it using following line of code:

self.navigationController.toolbarHidden = NO;

And to add button to your Toolbar you can use following code:

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];

flexibleItem is used to maintain proper distance between the two buttons that we have created above.

Now you can add these three items in order to make them visible on your view.

NSArray *items = [NSArray arrayWithObjects:item1, flexibleItem, item2, nil];   self.toolbarItems = items;

I hope it works for you.


iOS 11+ SWIFT 4 + Xcode 9 + Constraints

Works for both landscape + Portraitenter image description here

Portrait

    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        }    }