0

我在我的 ios 应用程序中使用半透明导航控制器。

问题是我的 CollectionViewcontroller 在半透明的 NavigationController 下移动。但是当我将其更改为 blacknavigationController 时,它会得到纠正。

我希望 translucentNavigationController 表现得像 blackNavigationController?我不知道如何实现这一目标?

谢谢你。 在此处输入图像描述

在此处输入图像描述

我已经尝试将部分标题添加到集合视图,但问题在于设备旋转时标题的大小保持不变。

我的旋转处理代码@j_mcnally

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{

    UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication]  statusBarOrientation];
    if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
    {
        NSLog(@"Is in portrait Mode");
        self.collectionView.contentInset=UIEdgeInsetsMake(44.0f, 0.0f, 0.0f, 0.0f);
        self.collectionView.scrollIndicatorInsets=UIEdgeInsetsMake(45.0f, 0.0f, 0.0f,  0.0f);
    }
    else{
        NSLog(@"Is in landscape Mode");

        self.collectionView.contentInset=UIEdgeInsetsMake(32.0f, 0.0f, 0.0f, 0.0f);
        self.collectionView.scrollIndicatorInsets=UIEdgeInsetsMake(33.0f, 0.0f, 0.0f,  0.0f);
}

}

通过旋转处理,问题似乎得到解决,除非我先向左旋转然后向右旋转。那么结果是这样的 在此处输入图像描述

4

4 回答 4

1

这里的问题是滚动视图的框架。当 UINavigationBar 是半透明的时,布局不会计算导航栏的高度,因此滚动视图的框架从 0,0 而不是 0,44 开始。解决方案是执行您已经执行的操作,但更改内容插图以偏移您的网格。

在此处输入图像描述

更改顶部内容插图以反映导航栏的大小。这将允许您的内容在导航栏下滚动,而不是从导航栏下开始。您可能需要关闭视图上的自动布局才能获得此菜单选项。我个人不使用自动布局,因为它破坏了 5.x 兼容性。

如果这给旋转留下了太多空间,你应该调整你的 shouldAutorotate 函数中的插图,或者你可以订阅 NSNotificationCenter 中的旋转事件。

根据您的新问题,似乎即使您增加了偏移量,您的视图也已从顶部移至 32.0f,当您旋转并将插图更改为 44.0f 时,它不会重置滚动视图内容偏移量。所以你在 12.0f,即使向下滚动会将你移动到正确的位置 0.0f。

因此,您可以让它在每次旋转时将 contentoffset 重置为 0.0,或者仅当视图仅在视图下方部分滚动时(如示例中所示)。因此,如果 contentOffset < 44.0f 则只需将其设置为 0.0,如果它更大则不要管它。或者,您可以在每次将视图旋转回纵向时重新计算新的偏移量 +12.0f,反之亦然,以补偿插入的差异。

于 2013-03-25T20:04:34.913 回答
0

我已经尝试将部分标题添加到集合视图,但问题在于设备旋转时标题的大小保持不变。

您可以检查当前设备方向tableView:heightForHeaderInSection:根据当前方向返回不同的高度。

于 2013-03-25T20:01:10.107 回答
0

您也许可以采用黑色并调整 alpha 属性。

self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.navigationController.navigationBar.alpha = 0.2f;
于 2013-03-25T20:03:26.130 回答
-1

我会做一个视图控制器并向它添加一个集合表。然后,您可以根据需要调整大小。您可能使用了 collectionViewController 模板,因此现在您的控制权减少了。

完成此操作后,将收集表放在导航栏下方。

于 2013-03-25T20:01:31.383 回答