用我的UITabBar在底部切掉最后一个细胞

时间:2014-05-21 09:19:02

标签: ios objective-c uitableview uitabbarcontroller uitabbar

我有一个viewController A主UITabBar。我的问题是,当我滚动到最后一个单元格,然后在viewController B中点击单元格UITableView后,当我回到viewController A时,我的最后一个单元格是在底部切断,我可以滚动显示此单元格的所有内容。但默认情况下,UITableView默认位于底部,与上次保持不变。

当我启动viewController B时,我会在VCB" UITabBar"中使用此代码隐藏我的viewWillAppear

- (void)hideTabBar {

    UITabBar *tabBar = self.tabBarController.tabBar;
    UIView *parent = tabBar.superview;
    UIView *content = [parent.subviews objectAtIndex:0];
    UIView *window = parent.superview;
    [UIView animateWithDuration:0.3
                     animations:^{
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds);
                         tabBar.frame = tabFrame;
                         content.frame = window.bounds;
                     }];
}

当我回到我的viewController A时,我在VCB" UITabBar":

中显示我的viewWillDisappear代码
- (void)showTabBar {

    UITabBar *tabBar = self._tab;
    UIView *parent = tabBar.superview; 
    UIView *content = [parent.subviews objectAtIndex:0];
    UIView *window = parent.superview;

    [UIView animateWithDuration:0.3
                     animations:^{
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds) - CGRectGetHeight(tabBar.frame);
                         tabBar.frame = tabFrame;

                         CGRect contentFrame = content.frame;
                         contentFrame.size.height -= tabFrame.size.height;
                     }];
}

我在iOS 6中遇到同样的问题,但滚动条不允许在底部,最后一个单元格被切断。

在我的viewController A in" viewWillAppear"我这样做:

if ([[UIDevice currentDevice].systemVersion hasPrefix:@"7"]) {
    [self._tabBarControllerArticle.tabBar setTranslucent:NO];    
}
  • 之前点击(图片1)
  • 当我回来时(图片2)

Before when I clicked

When I come back

感谢您提前获得所有答案!!!

3 个答案:

答案 0 :(得分:1)

另一种方法是将tabBar的半透明属性设置为NO,如下所示

// In init or viewDidLoad of tab bar controller
self.tabBar.translucent = NO;

假设您使用的是iOS7,则应调整UITableView以上self.tabBar

答案 1 :(得分:1)

单击发生问题的tableViewController,转到Attributes Inspector,向下滚动并取消选中" Under Bottom Bars"框。

enter image description here

这个question的选定答案帮助了我。

答案 2 :(得分:0)

您错过了将帧分配回您的视图。请参阅更新的代码。

- (void)showTabBar {

    UITabBar *tabBar = self._tab;
    UIView *parent = tabBar.superview; 
    UIView *content = [parent.subviews objectAtIndex:0];
    UIView *window = parent.superview;

    [UIView animateWithDuration:0.3
                     animations:^{
                         CGRect tabFrame = tabBar.frame;
                         tabFrame.origin.y = CGRectGetMaxY(window.bounds) - CGRectGetHeight(tabBar.frame);
                         tabBar.frame = tabFrame;

                         CGRect contentFrame = content.frame;
                         contentFrame.size.height -= tabFrame.size.height;

                         //YOU MISSED TO ADD BELOW LINE....
                         content.frame = contentFrame;
                     }];
}