Objective c 当self.edgesForExtendedLayout=UIRectEdgeNone时,导航栏将停止半透明

Objective c 当self.edgesForExtendedLayout=UIRectEdgeNone时,导航栏将停止半透明,objective-c,ios7,Objective C,Ios7,默认情况下,我不希望我的scrollView位于导航栏后面。所以我设置self.edgesForExtendedLayout=UIRectEdgeNone 该viewDidLoad是我所有viewController的主viewDidLoad 那很好。但我喜欢半透明的效果 当我将self.edgesForExtendedLayout设置为“无”时,半透明效果似乎消失了 如何将其设置为“无”并仍然获得半透明效果 我认为一个好的解决方案是安排scrollview的插入 是我干的 - (void)

默认情况下,我不希望我的scrollView位于导航栏后面。所以我设置self.edgesForExtendedLayout=UIRectEdgeNone

该viewDidLoad是我所有viewController的主viewDidLoad

那很好。但我喜欢半透明的效果

当我将self.edgesForExtendedLayout设置为“无”时,半透明效果似乎消失了

如何将其设置为“无”并仍然获得半透明效果

我认为一个好的解决方案是安排scrollview的插入

是我干的

- (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