以编程方式位于底部的 UIToolbar

Posted

技术标签:

【中文标题】以编程方式位于底部的 UIToolbar【英文标题】:Programmatically UIToolbar on the bottom 【发布时间】:2011-11-28 13:12:07 【问题描述】:

我正在以编程方式创建UIToolbar,但问题是此工具栏的位置向上(导航栏位置)。我怎样才能把它自动放在底部?

这是我的代码:

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

因为我的应用程序是通用的,并且我的视图控制器类没有任何 nib 文件,所以我需要为 iPad 和 iPhone 定义它,并且我不想使用 UIUserInterfaceIdiomPad

【问题讨论】:

您的问题令人困惑。您可以修改它以显示您的意思的屏幕截图吗?或许还可以添加更多代码来展示您是如何创建工具栏的? toolBar.frame = CGRectMake(0, 436, 320, 44); 向上表示导航栏位置! 在您创建工具栏框架之前,您无法引用它。您需要先创建它然后移动它,或者立即将 CGRectMake 设置到正确的位置。像 CGRectMake(0, 0, 320, 480 - 44) 因为我的应用程序是通用的并且我的 viewController 类没有任何 nib 文件我需要为 iPad 和 iPhone 定义它我不想使用 UIUserInterfaceIdiomPad 【参考方案1】:

您将rect2y 位置设置为[toolbar frame].origin.y 的值,此时代码中的值要么是nil,要么指向工具栏的某个其他实例,因为您随后紧接着 allocinit 一个新的工具栏。

即使工具栏在设置框架时有效,也不能将其当前的y 值用作新的y 值,因为它将是0

您应该将其放置在相对于屏幕底部减去工具栏高度的位置。试试这个:

CGRect frame = CGRectMake(0, [[UIScreen mainScreen] bounds].size.height - 44, [[UIScreen mainScreen] bounds].size.width, 44);

【讨论】:

不错。我一直在使用 view.bounds ,它将工具栏放在底部上方约 20 像素处。这样就行了。 @Jasarien 嗨,我有类似的情况,但在 Swift 中。但是,即使是直接翻译,您的解决方案也不起作用。工具栏显示其他高度值,但不是这个。 let toolbar = UIToolbar(frame: CGRectMake(0, UIScreen.mainScreen().bounds.size.height - 60, UIScreen.mainScreen().bounds.size.width, 60));【参考方案2】:

这将创建一个底部对齐的工具栏

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

【讨论】:

很好的答案,但是当将它与表格视图一起使用时,第一个单元格出现在导航栏下方,最后一个单元格出现在工具栏下方。【参考方案3】:
CGRect rect2 = CGRectMake(0, toolBar.frame.origin.y , self.view.frame.size.width , 0);

[toolbar setFrame:rect2];

试试这个希望对你有帮助

【讨论】:

不,我设置了我的矩形位置,我没有写我的整个代码对不起!

以上是关于以编程方式位于底部的 UIToolbar的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从集合视图下方设置标签约束

以编程方式将图像位置放在按钮顶部

以编程方式将 UIButton 添加到 UITableView 错误点

以编程方式膨胀底部导航视图菜单

以编程方式滚动底部的滚动视图 - iphone

Xamarin 以编程方式在底部形成垂直对齐图像