【问题标题】:tableview partially hidden first time loaded with iOS7 SDK第一次用iOS7 SDK加载的tableview部分隐藏
【发布时间】:2014-02-24 03:12:15
【问题描述】:

这个问题与navigation-bar-appear-over-the-views-with-new-ios7-sdk 类似 ,但有细微的差别。解决方法如下:

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

如果 tableView 嵌入在 navigationController 上,它确实对我有用,但如果 tableView 不在此 navigationController 层次结构下(例如,tableView 嵌入在控制器上,此控制器是另一个控制器的子视图,它基于navigationController),这个解决方案失败了。

所以我很困惑如何解决这个问题。如果你能帮我一把,对我有很大的帮助。谢谢。

【问题讨论】:

    标签: ios iphone objective-c uitableview


    【解决方案1】:

    我相信你需要将这些行移到UINavigationController下的控制器上。

    if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
        self.edgesForExtendedLayout = UIRectEdgeNone;
    

    编辑:作为 hack,您可以手动设置桌面位置,如下所示。

    CGFloat tableTop = 44.0f; //iOS7
    if ([[[UIDevice currentDevice] systemVersion] compare:@"7.0" options:NSNumericSearch] == NSOrderedAscending) {
        tableTop = 44; //iOS6
    }
    
    CGRect frame = self.tableView.frame;
    self.tableView.frame = CGRectMake(frame.origin.x, tableTop, frame.size.width, frame.size.height);
    

    【讨论】:

    • 如果您使用故事板,您可以在顶部布局指南中添加约束,如这篇文章所示:stackoverflow.com/questions/18902963/…
    • 可悲的是,我没有使用情节提要...全部通过代码。
    • 也许这是适合我情况的最佳解决方案,它确实工作正常,谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多