iOS 7 UITableView:如何删除导航栏和第一个单元格之间的空间
我的问题是:在分组的UITableView
iOS 7中有一个从表顶部和第一个单元格的差距。
奇怪的是,当我第一次加载内容时,表格看起来像第一个图像,但是当我向下滚动时,在第一个单元格出现在第一个单元格之间:
风格朴素这种行为没有出来,但不幸的是我需要使用分组表视图。
任何想法?
只要在你的ViewDidLoad
方法中join这个
self.automaticallyAdjustsScrollViewInsets = NO;
答案对我和我的团队来说非常有趣,而且像一个魅力
- 在Interface Builder中,只需在视图层次结构中的另一个视图下移动tableview。
原因:
我们观察到,如果这个第一个视图是一个UITableView的话 , 这只会发生在视图层次结构中的第一视图 。 所以,所有其他类似的UITableViews没有这个烦人的部分,除了第一个。 我们尝试将UITableView移出视图层次结构中的第一位,并且所有内容都按预期工作。
它解决了我的类似问题:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){ tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0); }
通过selectStoryboard中的xib或控制器,转到View Controller的属性检查器。 取消选中布局中的调整滚动查看插图 。 这将解决问题
如果你正在使用UITableView分组风格,只有1组,使用普通风格,而不是解决你的问题。
UITableViewController *tableViewController; tableViewController = [[UITableViewController alloc] initWithStyle:UITableViewStylePlain];
分组typestableView
最简单的解决scheme是:
tableView.tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, self.tableView.bounds.size.width, 0.01f)];
伙计们! 我有同样的问题。 TableView出现在导航栏和第一个单元格之间的可用空间。 这段代码救了我:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0) { return 10; } else return 2; }
UITableView本身上面有一个空格,而且在单元之间也有空格。 find我的解决scheme在上面的两个不同的答案..再次发布,以便没有人会错过这两个解决scheme。
这从上面删除了空间:
self.automaticallyAdjustsScrollViewInsets = NO;
并删除单元格下方的空格:将UITableView的'Style'属性设置为'Plain'
我正在使用Xcode 7.3.1
, iOS9
和iOS9
swift 2
。 我想分享一下对我有用的东西:
只要在你的ViewDidLoad
方法中join这个
self.automaticallyAdjustsScrollViewInsets = false;
从iOS 7开始,您将自动获取组头和一些空间。 将您的应用与“设置”应用进行比较,即可看到。 您可以通过告诉UITableView尽可能小地设置标题高度来解决这个问题。 请参阅如何隐藏第一个组标题 。
我意识到这是很久以前的答案,但是对于遇到类似情况的其他人,我将分享最终为我工作的东西:
如果您正在使用xib,请select顶层视图,并在“属性”检查器的“模拟度量标准”区域中将“状态栏”设置为“无”。 修正了我的间距问题。
对我来说这是行不通的
self.automaticallyAdjustsScrollViewInsets = NO;
这只会导致表视图位于NavigationBar下。
什么对我来说是进入我的故事板,并调整我的tableView。 看来我的tableView有一个20px的差距在顶部允许statusBar。 我把它缩小了,所有东西都排得很整齐。
在一个非常奇怪的情况下,我在桌面的顶部看到了这个额外的空间。
在我的导航堆栈中添加了一个UIScrollView
作为我的第一个控制器的根视图,如果我将下一个控制器作为Show Detail
segue呈现,则我的下一个控制器将在其视图之上有空间。
对我来说,解决scheme是将Present Modally
改变为Present Modally
,一切恢复正常。
Segue变化最奇怪的部分是, 在我添加我的根视图是一个UIScrollView
,我的Show Detail
segue模态地呈现下一个控制器。 然而, 在我添加了根UIScrollView
, Show Detail
segue正在推进下一个控制器(这不是我想要的)。
为了解决这个问题,请确保在ViewController上取消选中此字段:
在ViewController >> Attibutes Inspector >>布局(未选中 – 调整滚动查看插图 )
示例图像
如果这还不够,请在TableView上试试这个,将Style设置为Plain :
示例图像
这将解决您的问题
有一个类似的问题,甚至设置自动调整ScrollViewInsets为NO。 这对我解决了:
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section; { return CGFLOAT_MIN; }
在UIViewController.h
iOS9 SDK有一个方法:
@property(nonatomic,assign) BOOL automaticallyAdjustsScrollViewInsets NS_AVAILABLE_IOS(7_0); // Defaults to YES
不是一个财产,所以
self.automaticallyAdjustsScrollViewInsets = NO;
应该
-(BOOL)automaticallyAdjustsScrollViewInsets{ return NO; }
- Grand Central Dispatch(GCD)与performSelector – 需要更好的解释
- 未logging的NSURLErrorDomain错误代码(-1001,-1003和-1004)使用StoreKit
- iOS – closures应用程序时的CoreLocation和geofencing
- 如何打开手机设置,当一个button被点击ios
- 如何禁用内容适合在屏幕上的UITableView表中的滚动
- 显示启animation面的时间超过默认的秒数
- 数据input自定义视图的Swift示例(自定义应用程序内键盘)
- 如何旋转他们自己的中心周围的子视图?
- iPhone UIButton – 图像的位置