如何在iOS 7中实现导航栏和工具栏对嵌套视图的半透明效果?

时间:2014-06-26 19:06:58

标签: cocoa-touch ios7 uitoolbar

如果我使用标准UIViewControllerUITableViewController,则导航栏和工具栏会在内容的顶部显示为半透明。但是,如果我使用自己的自定义视图层次结构,我将不再看到效果。在以下屏幕截图中,您可以看到表格视图未显示在粘性工具栏下方。

enter image description here

UIToolbar的初始化如下:

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.translucent = YES;
        self.barTintColor = [UIColor colorWithRed:1.0f green:0.0 blue:0.0 alpha:0.1f];

        // irrelevant code here
    }
    return self;
}

loadView的实际UIViewController很长,所以我只会展示一个布局图:

 ___________________________
|  _______________________  | <-- UIView (self.view)               
| |                       | |
| |  UITableView          | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |                       | |
| |_______________________| |
|  _______________________  |
| | UIToolbar             | |
| |_______________________| |
|___________________________|

我确保在viewDidLoad中设置扩展布局的边缘:

self.edgesForExtendedLayout = UIRectEdgeAll;

edgesForExtendedLayout的文档是一个单一的内容,因此我不得不考虑其他相互关联的事情,以使工具栏变得半透明。

1 个答案:

答案 0 :(得分:0)

您的tableView应该扩展并填充整个视图。然后,您可以设置contentInset,它是顶部导航栏的高度以及底部的工具栏。这样你就可以看到内容流。下面是关于如何做到这一点的代码片段。确保tableView位于视图层次结构的底部,并且导航栏和工具栏位于其顶部。

 self.tableView.contentInset = UIEdgeInsetsMake(NavBarHeight, 0, ToolBarHeight+distance_Of_ToolBar_FromThe_Bottom_of_view, 0);