Objective c 当self.edgesForExtendedLayout=UIRectEdgeNone时,导航栏将停止半透明
默认情况下,我不希望我的scrollView位于导航栏后面。所以我设置self.edgesForExtendedLayout=UIRectEdgeNone 该viewDidLoad是我所有viewController的主viewDidLoad 那很好。但我喜欢半透明的效果 当我将self.edgesForExtendedLayout设置为“无”时,半透明效果似乎消失了 如何将其设置为“无”并仍然获得半透明效果 我认为一个好的解决方案是安排scrollview的插入 是我干的Objective c 当self.edgesForExtendedLayout=UIRectEdgeNone时,导航栏将停止半透明,objective-c,ios7,Objective C,Ios7,默认情况下,我不希望我的scrollView位于导航栏后面。所以我设置self.edgesForExtendedLayout=UIRectEdgeNone 该viewDidLoad是我所有viewController的主viewDidLoad 那很好。但我喜欢半透明的效果 当我将self.edgesForExtendedLayout设置为“无”时,半透明效果似乎消失了 如何将其设置为“无”并仍然获得半透明效果 我认为一个好的解决方案是安排scrollview的插入 是我干的 - (void)
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
self.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationController.navigationBar.translucent=YES;
}
// Do any additional setup after loading the view.
}
这就是我得到的:
半透明意味着可以通过半透明看到条下的内容。通过关闭扩展边,半透明仍然存在,只是因为下面没有内容,所以您无法看到它。我现在也有同样的问题。所以,如果您需要保持半透明的导航栏,您不应该更改边,而应该更改插入。 这是帮助我的代码
- (void)viewDidLoad
{
[super viewDidLoad];
if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
{
//self.edgesForExtendedLayout = UIRectEdgeNone;
self.navigationController.navigationBar.translucent=YES;
self.automaticallyAdjustsScrollViewInsets = YES;
}
// Do any additional setup after loading the view.
}
希望这有帮助。将其放入
viewDidLoad()
:
有没有办法我仍然可以有半透明效果?如果主视图没有在边缘或其他位置剪裁子视图,则可能会出现这种情况。将“剪裁子视图”设置为false仍然无法获得透明边缘。将“自动调整scrollview insets”设置为“是”也不起作用。尝试此操作将不会将视图扩展到下方,但其余视图将扩展到下方
[自设置扩展布局:UIRectEdgeTop | UIRectEdgeLeft | UIRectEdgeRight];您已将其标记为已回答,是否已修复?@JimThio您能用答案更新问题吗?我也有同样的问题,但仍然无法解决。谢谢……您的UITableView必须是主视图或第一个子视图。然后尝试根本不使用edgesForExtendedLayout。在某些视图控制器中,我只是通过编程方式调整内容。这不是问题他的想法。然而,我认为self.automaticallyAdjustsScrollViewInsets=YES;应该自动完成这项工作。这对我来说也不起作用,但我不知道为什么,我可能只是猜测。我想,当您使用自定义导航控制器或任何自定义工具来显示视图控制器时,可能不会计算调整或内容插入操作上,因为iOS认为您的导航栏未显示。
if(floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_6_1) {
CGRect statusBarViewRect = [[UIApplication sharedApplication] statusBarFrame];
float heightPadding = statusBarViewRect.size.height+self.navigationController.navigationBar.frame.size.height;
myContentView.contentInset = UIEdgeInsetsMake(heightPadding, 0.0, 0.0, 0.0);
}
self.extendedLayoutIncludesOpaqueBars = YES