最近遇到一個問題是這樣的,App一般自己都會有一個UINavigationController,頂部TableView如果有tableHeaderView如果設定起始位置是(0,0)是在導航欄的下面的,為了更好地UI希望從螢幕的(0,0)開始,就遇到了上面的這個問題,簡單的看一下效果:

主要代碼如下:
- (UITableView *)tableView {
if (!_tableView) {
_tableView = [[UITableView alloc]
initWithFrame:CGRectMake(0, 0, CGRectGetWidth(self.view.bounds),
CGRectGetHeight(self.view.bounds))
style:UITableViewStylePlain];
// _tableView.tableFooterView = [[UIView alloc] init];
_tableView.rowHeight =40.0;
_tableView.sectionHeaderHeight = 0.0;
_tableView.sectionFooterHeight = 0.0;
_tableView.dataSource = self;
_tableView.delegate = self;
}
return _tableView;
}
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return 5;
}
//http://www.cnblogs.com/xiaofeixiang 技術交流:228407086
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell=[[UITableViewCell alloc]init];
[email protected]"部落格園-FlyElephant";
return cell;
}
這個時候設定automaticallyAdjustsScrollViewInsets效果如下:
官方文檔解釋如下:
A Boolean value that indicates whether the view controller should automatically adjust its scroll view insets.
Declaration
SWIFT
var automaticallyAdjustsScrollViewInsets: Bool
OBJECTIVE-C
@property(nonatomic, assign) BOOL automaticallyAdjustsScrollViewInsets
Discussion
The default value of this property 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, such as when there is more than one scroll view in the view hierarchy.
Availability
Available in iOS 7.0 and later.
簡單點說就是automaticallyAdjustsScrollViewInsets根據按所在界面的status bar,navigationbar,與tabbar的高度,自動調整scrollview的 inset,設定為no,不讓viewController調整,我們自己修改布局即可~