>

异常上火...,sbf282.com:UITabBar 隐藏的需求

- 编辑:澳门博发娱乐官网 -

异常上火...,sbf282.com:UITabBar 隐藏的需求

2、第二种:

将 push 到的页面包车型大巴 UItabBar 遮蔽

// 在push跳转时掩饰tabBar

UIViewController *vc2 = [UIViewController new];

vc2.hidesBottomBarWhenPushed = YES;

[vc1 pushViewController:vc2 animated:YES];

该措施在push页面包车型客车时候使用,有必然的局限性,依照其名字能够窥见,独有在 push跳转的时候才会一蹴而就,也正是说在 UITabBarController 和 UINavigationController 结合使用的时候能用。

那也便是笔者子在开张营业时涉嫌的这种情形,作者个人感到也是比较常用的一种情形!

不行使系统提供的幸存措施,自定义方法,修改 TabBar 的 subview 的 frame 就行了

原理:

UITabBarController的subview 共有多个,贰个叫 UITabBar,便是上面的不得了 Bar;另二个叫UITranstionview,就是 Bar 上面的视图。那多少个 view 下边还可能有任何的subview,那就不用去管它了。把UITabBar的 y 向下移五十多少个单位,把UITranstionview 的 hight 加长 49 个单位。

代码1:

- hidesTabBar:hidden{

[UIView beginAnimations:nil context:NULL];

[UIView setAnimationDuration:0];

for (UIView *view in self.tabBarController.view.subviews) {

if ([view isKindOfClass:[UITabBar class]]) {

if {

[view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height, view.frame.size.width , view.frame.size.height)];

} else {

[view setFrame:CGRectMake(view.frame.origin.x, [UIScreen mainScreen].bounds.size.height - 49, view.frame.size.width, view.frame.size.height)];

}

} else {

if([view isKindOfClass:NSClassFromString(@"UITransitionView")]){

if {

[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height)];

} else {

[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, [UIScreen mainScreen].bounds.size.height - 49 )];

}

}

}

}

[UIView commitAnimations];

}

代码2:

-makeTabBarHidden:hide { // Custom code to hide TabBar

if ( [self.tabBarController.view.subviews count] < 2 ) {

return;

}

UIView *contentView;

if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) {

contentView = [self.tabBarController.view.subviews objectAtIndex:1];

} else {

contentView = [self.tabBarController.view.subviews objectAtIndex:0];

}

if {

contentView.frame = self.tabBarController.view.bounds;

} else {

contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x, self.tabBarController.view.bounds.origin.y, self.tabBarController.view.bounds.size.width, self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);

}

self.tabBarController.tabBar.hidden = hide;

}

如上是作者总括的三种艺术,也是从各位大神的博客计算的,假若有啥新的艺术,款待一齐研究!

[self makeTabBarHidden:YES];

如何iOS6和iOS7下隐藏UITabBar

不栽跟头,你就不会进步!

这两日适配iOS6,在UITabBar掩饰后原区域不响应点击事件的难题上支支吾吾,格外上火(不用心,就能那样)!

对于iOS7而言,隐藏UITabBar很容易:

self.tabBarController.tabBar.hidden = YES;

接下来把self.view的冲天加上个tabBar的冲天(暗中同意中度49)就ok了,可谓十拿九稳!iOS7以下就极其了!

这里有一段代码,iOS6及以上系统都得以用,小编就一直粘过来了

 

  1. -(void)makeTabBarHidden:(BOOL)hide { // Custom code to hide TabBar
  2. if ( [tabBarController.view.subviews count] < 2 ) { return;
  3. }
  4. UIView *contentView; if ( [[tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) {
  5. contentView = [tabBarController.view.subviews objectAtIndex:1]; } else {
  6. contentView = [tabBarController.view.subviews objectAtIndex:0]; }
  7. if (hide) {
  8. contentView.frame = tabBarController.view.bounds; } else {
  9. contentView.frame = CGRectMake(tabBarController.view.bounds.origin.x, tabBarController.view.bounds.origin.y,
  10. tabBarController.view.bounds.size.width, tabBarController.view.bounds.size.height -
  11. tabBarController.tabBar.frame.size.height); }
  12. tabBarController.tabBar.hidden = hide;
  13. }

     

    经核查,可信赖可用,再也不用担忧iOS6下UITabBar遮掩后该区域还死活无法响应点击事件的难题了!

    首先眼观察这段代码时,作者是家常便饭啊,竟然没去试试,事后,那也令自身那一个恼火(作者想小编应当相应)!

    本身共事试了刹那间,奏效!悔不当初 .多看一眼 .......

    自身解析一下这几个代码:

    在iOS6上,UITabBar位于贰个viewController中self.view的方面,你假如用

    self.tabBarController.tabBar.hidden = YES;

    然后您那样

    [self.tabBarController setTabBarItem:nil];

    居然你再这么

    [self.tabBarController.tabBar removeFromSuperView];

    最后你会意识,tabBar所占的区域依然不能够响应点击事件,在iOS6上它也就占着茅坑不拉了,你真拿它没招...

    之所以用地点的代码吧!

    不说吗,作者只是对这种iOS6上tabBar占着茅坑不拉的行事很气愤!

    说点实用的

    话说本人那边是写的是三个接续自UITabBarController的二个子类,在viewDidLoad方法中本人发觉,self.view一齐首是有多少个subview的,三个正是tabBar,那么些货占着self.view下方49的惊人,另贰个正是contentView(小编姑且这么称呼,具体叫什么名揣度得问xcode它老爹了).iOS7之下系统中当您把tabBar拿掉后,contentView是不会自动把团结的高度延展的,所以就您就得手动去帮它把tabBar的惊人加上去。而iOS7及以上的体系,苹果的开垦人士应该帮大家把那活给干了,所以大家隐蔽就行了。

    自己自个儿的知道,招待指正!

 

 

 

不栽跟头,你就不会进步! 那二日适配iOS6,在UITabBar掩饰后原区域不响应点击事件的主题素材上模棱两可,万分上火...

 

iOS 中三个tabBarController 切换来另多少个tabBarController的兑现方式

iOS 中主tab(含有5个视图) 切换来次级tab(含有别的四个视图) 的利用方法:

-(void)makeTabBarHidden:(BOOL)hide

{

if ( [self.rootTabBarController.view.subviews count] < 2 ) {

return;

}

UIView *contentView;

if ( [[self.rootTabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] ) {

contentView = [self.rootTabBarController.view.subviews objectAtIndex:1];

} else {

contentView = [self.rootTabBarController.view.subviews objectAtIndex:0];

}

if (hide) {

contentView.frame = self.rootTabBarController.view.bounds;

}

else {

contentView.frame = CGRectMake(self.rootTabBarController.view.bounds.origin.x,

self.rootTabBarController.view.bounds.origin.y,

self.rootTabBarController.view.bounds.size.width,

self.rootTabBarController.view.bounds.size.height - self.rootTabBarController.tabBar.frame.size.height);

}

self.rootTabBarController.tabBar.hidden = hide;

}

中一个tabBarController 切换来另五个tabBarController的贯彻方式 iOS 中主tab(含有5个视图) 切换成次级tab(含有其它三个视图) 的使用办法:...

当页面使用 UITabBarController + UINavigationController 框架的时候,当跳转到详细情况页面包车型地铁时候,假若 UITabBar 依然存在的话就会导致逻辑混乱,顾客体验也会降低,由此大家就有贰个在详细的情况页将 UITabBar 掩饰的急需,当然,在别的的局地地方也也是有隐敝 UITabBar 的必要, 在此处我为我们介绍三种隐敝 UITabBar 的秘籍,大家可以遵照详细的必要开展分选。

return;

办法二:navigationController +tabBarController的布局来讲,在push到下一流的childController的时候用
childController.hidesBottomBarWhenPushed = YES;

一贯遮盖当前页面包车型大巴 UITabBar

}

办法一:将设置展现试图的莫斯中国科学技术大学学

// 显示tabBar

self.tabBarController.tabBar.hidden = NO;

// 隐藏tabBar

self.tabBarController.tabBar.hidden = YES;

[self makeTabBarHidden:NO];

    [self.navigationController pushViewController:detailView animated:YES]; 

{

- (void)makeTabBarHidden:(BOOL)hide
{
    if ( [self.tabBarController.view.subviews count] < 2 )
    {
        return;
    }
    UIView *contentView;
    
    if ( [[self.tabBarController.view.subviews objectAtIndex:0] isKindOfClass:[UITabBar class]] )
    {
        contentView = [self.tabBarController.view.subviews objectAtIndex:1];
    }
    else
    {
        contentView = [self.tabBarController.view.subviews objectAtIndex:0];
    }
    //    [UIView beginAnimations:@"TabbarHide" context:nil];
    if ( hide )
    {
        contentView.frame = self.tabBarController.view.bounds;        
    }
    else
    {
        contentView.frame = CGRectMake(self.tabBarController.view.bounds.origin.x,
                                       self.tabBarController.view.bounds.origin.y,
                                       self.tabBarController.view.bounds.size.width,
                                       self.tabBarController.view.bounds.size.height - self.tabBarController.tabBar.frame.size.height);
    }
    
    self.tabBarController.tabBar.hidden = hide;

contentView.frame = self.tabBarController.view.bounds;

}

}

detailViewController *detailView=[[detailViewController alloc] initwithDic:dic];
    detailView.hidesBottomBarWhenPushed = YES;

}

本文由胜博发-编程发布,转载请注明来源:异常上火...,sbf282.com:UITabBar 隐藏的需求