UITableView以iOS 7中的偏移量开始
我已经将一个简单的简单UITableView拖放到iOS 7中的UIViewController。
现在在第一个单元格开始之前有一个垂直的空间偏移量。 我如何摆脱它? 我希望第一行更接近UITableView实际启动的顶端。 我没有要求我的大偏移?
有任何想法吗?
默认情况下,表格视图控制器会将内容填充到导航栏下方,以便您可以滚动其下的内容,并以模糊的状态在导航栏/工具栏下方看到它。
看起来你正在把它定位在44(也许是64)px从导航栏下移出来,但它已经弥补了这一点,所以你有一个很大的差距。
转到IB中的storyboard / xib,并取消导航栏内容的显示内容。
UIViewController的新的iOS 7实现有一个新的选项集,允许开发人员select系统是否自动为UIScrollView , UITableView和派生添加插入。
要禁用此行为,请在UIViewController选定的对象检查器中取消选中这些框,以便在InterfaceBuilder中为所有想要的UIViewController执行操作:
更多细节:
- 立即提交您的iOS 7应用程序。
- iOS 7 UI过渡指南>外观和行为
从iOS7转换指南:
如果您不希望自动调整滚动视图的内容插页,请自动将“调整滚动视图插入”设置为“否”。 (automaticAdjustsScrollViewInsets的默认值为YES。)
self.automaticallyAdjustsScrollViewInsets = NO;
我有一个类似的问题,解散一个viewController后,我的tableView的contentOffset被改为(0,-64)。
我的解决scheme有点奇怪,我尝试了所有其他的答案,但没有成功,唯一解决我的问题是切换.xib控件树中的tableView位置
这是在父视图中的第一个控件像这样:
我在ImageView之后移动了tableView,它工作正常:
似乎把桌面视图放在第一个位置是造成了麻烦,而将桌面视图移动到另一个位置解决了问题。
PD我没有使用autoLayout都不是故事板
希望这可以帮助别人!
它解决了我的类似问题:
if ([[UIDevice currentDevice].systemVersion floatValue] >= 7){ tableView.contentInset = UIEdgeInsetsMake(-20, 0, 0, 0); }
尝试使用这个
tableView.separatorInset = UIEdgeInsetsZero;
显然,如果你支持的是比iOS7更less的东西,你需要确保对象在调用之前响应这个select器。
对于iOS 9,本页面的其他答案都不适用于我(即,取消选中Storyboard中的框,将AdjustsScrollViewInsets automaticallyAdjustsScrollViewInsets
设置为NO
)。
我的解决方法,我真的不满意是这样的:
- (void)viewDidAppear:(BOOL)animated { self.tableView.contentOffset = CGPointMake(0.0, 0.0); self.tableView.contentInset = UIEdgeInsetsMake(0.0, 0.0, 0.0, 0.0); }
viewWillAppear
或viewDidLoad
中的相同行是无效的。
严重的是,改变contentOffset
不是解决scheme。 你只是修补一个问题,而不是修复原因。 我一直面临同样的问题,事实certificate, 分组 tableViews有一个填充顶部。 在我的情况下,设置types为普通已经完成了。
希望它可以节省几分钟的时间。 Z.
有时,当UIViewController
embedded到导航控制器中时,我在Table View的顶部会产生一个64
高度差距。
过去,我只是重新创造一切,希望在一个干净的石板之后,这些约束是正确的。
TIL:如果您不想对Top Layout Guide
进行垂直限制,则可以按住Option
键以访问Container Margin
。
然后确保Top Space to Superview
常量设置为0
。 这至less对我有效。
这对我有用:
- (void)loadView { [super loadView]; [self setAutomaticallyAdjustsScrollViewInsets:YES]; self.edgesForExtendedLayout = UIRectEdgeNone; self.view.frame = CGRectZero; self.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; }
如果你在UITableView之前添加一个空的UIView(或者任何视图是可滚动的,比如ScrollView和TextView),你可以有一个运气。
我有一个UITableViewControllerembedded在一个容器视图。 为了摆脱不必要的64点的垂直空间,我需要取消在界面生成器中的“调整滚动视图插入”,并在我的UITableViewController的viewWillAppear设置UITableView的contentInset如下。
垂直空间的大小看起来与导航栏的框架高度和y偏移量相匹配。 这个问题只发生在iOS 7上。
- (void)viewWillAppear:(BOOL)animated; { [super viewWillAppear:animated]; if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { const CGRect navBarFrame = self.navigationController.navigationBar.frame; const CGFloat blankVerticalSpace = navBarFrame.origin.y + navBarFrame.size.height; self.tableView.contentInset = UIEdgeInsetsMake(-blankVerticalSpace, 0, 0, 0); } }
在Xamarin iOS中,我在前台模式对话框closures后,在后台的UITableViewController中出现了这个问题。 在移动到前台的过程中,UITableViewController设置了insets(由iOS某处):
这个class级解决了它
public class UITableViewControllerWithBugFix : UITableViewController { public UITableViewControllerWithBugFix(UITableViewStyle withStyle) : base(withStyle) { } public override void ViewWillLayoutSubviews() { if (TableView.ContentInset.Top != 0.0f) TableView.ContentInset = UIEdgeInsets.Zero; if (TableView.ScrollIndicatorInsets.Top != 0.0f) TableView.ScrollIndicatorInsets = UIEdgeInsets.Zero; base.ViewWillLayoutSubviews(); } }
我不时回到这种可怕的情况,我注意到这仍然是个未知数。 所以,为了将来的记忆…
最近,我正在解决这个解决方法。
- 在UITableView顶部添加一个子视图,零像素高度。 与Autolayout工作或没有。
- 如果我有信心:-)我删除这个虚假的观点,修复顶部的约束,神奇的是它的工作原理。
不要问我为什么,我仍然认为这是一个UIKit深处的错误。
如果转到故事板,则可以通过select表格并在“属性”检查器中的“表视图”部分下更改偏移量,只需将左侧的“分隔符插入”更改为0即可。
我认为真正的解决办法是在tableview上设置你的顶部和底部约束等于topMargin和bottomMargin。 不是顶部布局指南和底部布局指南。 这可以让你保持自动调整ScrollViewInsets为true。
Swift 3解决scheme:
class PaddingLessTableView : UITableView { override func headerView(forSection section: Int) -> UITableViewHeaderFooterView? { return nil } override func footerView(forSection section: Int) -> UITableViewHeaderFooterView? { return nil } }
如果将TableViewControllerembedded到NavigationController或ContainerView中, You have to constraint to margins instead of top Layout guide in Storyboard
。 Check constraint to margins when you are doing the constraints
没有其他方式为我工作。 我不能评论,所以我只是重申Robert Chens的回答。
我尝试了几个答案。 更改故事板中的设置会导致从左侧popup的叠加菜单导致的波纹问题。
我在故事板中只有一个空白的UIViewController,否则一切都以编程方式生成。
我有UIViewController里面的UIView内的UITableView相同的问题。 也就是说,当UIViewController被embedded到导航控制器中时,节标题开始太慢了。 没有导航控制器一切工作正常。
为了解决这个问题,我创build了一个UILabel,并在约束条件下放置了UILabel底部约束= UIView的顶部约束(所以它不会显示在屏幕上)。
inputsContainerView.addSubview(titleLabel) inputsContainerView.addSubview(tableView) // inputsContainerView /////////////////////////////////////// inputsContainerView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true inputsContainerView.centerYAnchor.constraint(equalTo: view.centerYAnchor, constant: 0).isActive = true inputsContainerView.widthAnchor.constraint(equalTo: view.widthAnchor, constant: -40).isActive = true inputsContainerView.heightAnchor.constraint(equalTo: view.heightAnchor, multiplier: 0.7).isActive = true // tableView /////////////////////////////////////// tableView.centerXAnchor.constraint(equalTo: inputsContainerView.centerXAnchor).isActive = true tableView.topAnchor.constraint(equalTo: inputsContainerView.topAnchor).isActive = true tableView.widthAnchor.constraint(equalTo: inputsContainerView.widthAnchor).isActive = true tableView.heightAnchor.constraint(equalTo: inputsContainerView.heightAnchor).isActive = true // titleLabel - inserted to stop bad section header behavior /////////////////////////////////////// titleLabel.centerXAnchor.constraint(equalTo: inputsContainerView.centerXAnchor).isActive = true titleLabel.bottomAnchor.constraint(equalTo: inputsContainerView.topAnchor).isActive = true titleLabel.widthAnchor.constraint(equalTo: inputsContainerView.widthAnchor).isActive = true titleLabel.heightAnchor.constraint(equalToConstant: 20).isActive = true
- 如果部分标题隐藏在UICollectionView中,则删除空白空间
- iOS 7 – navigationController设置我的UIScrollView的contentInset和ContentOffset
- 更改启animation面iOS 7中的状态栏文字颜色
- 在iOS7上注入系统触摸事件
- 当调用reloadRowsAtIndexPaths时,UITableView弹回到一节的顶部
- 如何在iOS 7上更改状态栏的背景颜色和文字颜色?
- iPhone风景 – 只有iOS7 R4图像资产没有启动图像
- 在iOS7中select单元格时,UITableView分隔线会消失
- UIlabel layer.cornerRadius无法在iOS 7.1中使用