我试图保留用作照片库的 Collection View
的 frame
。但是在 View 中隐藏 UITabBarController
和 UINavigationController
之后,它的框架发生了变化。
这是我用来隐藏两者的代码:
- (void)hideTabBar:(UITabBarController *) tabbarcontroller
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
if(IS_IPHONE_5)
{
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, 568, view.frame.size.width, view.frame.size.height)];
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 568)];
}
}
}
else
{
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
}
}
}
[UIView commitAnimations];
}
- (void)showTabBar:(UITabBarController *) tabbarcontroller
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
if(IS_IPHONE_5)
{
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, 519, view.frame.size.width, view.frame.size.height)];
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 519)];
}
}
}
else
{
for(UIView *view in tabbarcontroller.view.subviews)
{
if([view isKindOfClass:[UITabBar class]])
{
[view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];
}
else
{
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
}
}
}
[UIView commitAnimations];
}
- (void)hideNavBar:(UINavigationController *) navBarController
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
[self.navigationController setNavigationBarHidden:YES];
[UIView commitAnimations];
}
- (void)showNavBar:(UINavigationController *) navBarController
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0];
[self.navigationController setNavigationBarHidden:NO];
[UIView commitAnimations];
}
这是我的问题的图片:
非常感谢您的帮助
最佳答案
我假设您正在使用 ScrollView 来展示照片。我在你的 View Controller 中遇到了类似的问题和设置
self.automaticallyAdjustsScrollViewInsets = NO;
应该有帮助。
Default value is YES, which allows the view controller to adjust its scroll view insets in response to the screen areas consumed by the status bar, navigation bar, and toolbar or tab bar. Set to NO if you want to manage scroll view inset adjustments yourself...
关于ios - 隐藏导航栏和标签栏后 UICollectionView 框架发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23131147/