Programmatically UIToolbar on the bottom
Solution 1
You're setting rect2
's y
position to the value of [toolbar frame].origin.y
, which at that point in the code is either nil
, or pointing to some other instance of a toolbar, because you then immediately afterwards alloc
and init
a new toolbar.
Even if the toolbar was valid when you set it's frame, you can't use it's current y
value as the new y
value, because it will be 0
.
You should position it relative to the bottom of the screen, minus the height of the toolbar. Try this instead:
CGRect frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height - 44, [[UIScreen mainScreen] bounds].size.width, 44);
Solution 2
This creates a bottom aligned toolbar
CGRect frame, remain;
CGRectDivide(self.view.bounds, &frame, &remain, 44, CGRectMaxYEdge);
UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:frame];
[toolbar setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin];
[self.view addSubview:toolbar];
iOS.Lover
Updated on June 20, 2022Comments
-
iOS.Lover almost 2 years
I am creating a
UIToolbar
programmatically but the issue is the position of this tool bar is up (navigation bar position). how can I put it automatically on the bottom?Here is my code:
CGRect rect2 = CGRectMake(0, toolBar.frame.origin.y , self.view.frame.size.width , 0); toolBar = [[UIToolbar alloc]initWithFrame:rect2]; toolBar.barStyle = UIBarStyleBlackTranslucent; [toolBar sizeToFit]; [self.view addSubview:toolBar]; [toolBar release];
because my application is universal and my view controller class does not have any nib file I need to define it for both iPad and iPhone, and I don't want use
UIUserInterfaceIdiomPad
. -
iOS.Lover over 12 yearsno I set my rect position I did not write my whole code sorry !
-
Ömer Faruk Almalı over 10 yearsGood answer but when using this with table view, first cell appears below navigation bar and last cell appears below toolbar.
-
galactikuh about 8 yearsNice. I've been using view.bounds which puts the toolbar about 20 pixels above the bottom. This does the trick.
-
TomLisankie almost 8 years@Jasarien Hi, I have a similar situation but in Swift. However, your solution is not working even though it's a direct translation. The toolbar appears for other height values, but not this one. let toolbar = UIToolbar(frame: CGRectMake(0, UIScreen.mainScreen().bounds.size.height - 60, UIScreen.mainScreen().bounds.size.width, 60));