gpt4 book ai didi

ios - 在导航栏下方设置 ImageView

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:59 24 4
gpt4 key购买 nike

在我的 UIViewController 中,我有一个 UIImageView,它占据了 Controller (屏幕)的整个大小并用作背景。在 UIImageView 之上,我有一个背景清晰的 UITableView。我将导航栏设置为半透明,如下所示:

self.navigationController.navigationBar.translucent = YES;

UIImageView 位于导航栏下方,正如我希望的那样。不幸的是,同样的事情发生在 UITableView 上。我想将 UITableView 放在导航栏的底部,将 UIImageView 留在下面。如果我设置:

[self setEdgesForExtendedLayout:UIRectEdgeBottom]

然后 UITableView 位于导航栏的底部,但同样的情况也发生在 UIImageView 上。将 UIImageView 留在导航栏下方并下推导航栏底部的 UITableView 最简单的解决方案是什么?

最佳答案

默认情况下,在 iOS 7 中,内容扩展到屏幕的顶部和底部,位于任何导航栏、工具栏或标签栏的下方。如果您将表格 View 的 frame 设置为在导航栏之后开始,表格 View 的内容将不会滚动到导航栏下方,从而提供漂亮的模糊效果。

您可能想要做的是将表格 View 的 y 原点保持在导航栏下方的 0,并设置内容插入,以便内容在导航栏之后开始。

这很简单。如果您使用自动布局, View Controller 的顶部布局指南将识别状态栏和导航栏的高度,因此您无需自己计算。导航栏底部应以 66 结尾。

//Using Auto Layout
CGFloat navigationBarHeight = self.topLayoutGuide.length;

//Not using Auto Layout
UINavigationBar *nav = self.navigationController.navigationBar;
CGFloat navigationBarHeight = nav.frame.origin.y + nav.frame.size.height;

myTableView.contentInset = UIEdgeInsetsMake(navigationBarHeight, 0, 0, 0)

当然,如果您确实希望框架在导航栏上方的高度保持不变之后开始,您只需手动设置表格 View 的框架即可。

CGRect tableViewFrame = self.view.bounds;
tableViewFrame.origin = CGPointMake(tableViewFrame.origin.x, navigationBarHeight);
tableViewFrame.size = CGSizeMake(tableViewFrame.size.width, tableViewFrame.size.height - navigationBarHeight*2);
myTableView.frame = tableViewFrame;

编辑:啊,差点忘了。您还需要更改 scrollIndicatorInsets 以匹配 contentInset,这样您的滚动条就不会移出屏幕。

myTableView.scrollIndicatorInsets = myTableView.contentInset;

关于ios - 在导航栏下方设置 ImageView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23327022/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com