我在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);
}
}
使用旋转处理问题似乎是固定的,除非我进行左旋转然后右旋转。结果就是这样
答案 0 :(得分:1)
这里的问题是scrollview的框架。当UINavigationBar是半透明时,布局不计算导航栏的高度,因此scrollview的框架从0,0而不是0,44开始。解决方案是执行您已经执行的操作,但更改内容插入以抵消网格。
更改顶部内容插件以反映导航栏的大小。这将允许您的内容在导航栏下滚动,而不会从导航栏下方开始。您可能需要关闭视图上的自动布局才能获得此菜单选项。我个人不使用autolayout,因为它破坏了5.x兼容性。
如果在旋转时留下太多空间,则应调整shouldAutorotate函数中的插入,或者可以在NSNotificationCenter中订阅旋转事件。
根据您的新问题,即使您增加偏移量,您的视图也会从顶部移动到32.0f,当您旋转并将插入更改为44.0f时,它不会重置scrollviews内容偏移量。所以你的12.0f,即使向下滚动也会让你移动到正确的位置0.0f。
因此,您可以在每次旋转时将contentoffset重置为0.0,或者仅当视图在视图中仅部分滚动时才会将其重置为0.0。所以如果contentOffset是< 44.0f然后将其设置为0.0,如果它更大的话就单独留下它。或者,每次将视图旋转回肖像时,您都可以重新计算新的偏移+ 12.0f,反之亦然,以补偿插入的差异。
答案 1 :(得分:0)
我已经尝试将节标题添加到集合视图中,但问题是在设备旋转时标题的大小保持不变。
您可以在tableView:heightForHeaderInSection:
中check the current device orientation根据当前方向返回不同的高度。
答案 2 :(得分:0)
你可以拍黑色并调整alpha属性。
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
self.navigationController.navigationBar.alpha = 0.2f;
答案 3 :(得分:-1)
我会做一个viewcontroller并为它添加一个集合表。然后你可以调整到你需要的任何东西。您可能使用了collectionViewController模板,因此现在控制较少。
执行此操作后,将收集表放在导航栏下。