【问题标题】:UITableView Layout issue, (Content Inset)UITableView 布局问题,(内容插图)
【发布时间】:2016-01-21 06:02:17
【问题描述】:

UINavigationController -> UITabBarController -> UIViewController -> UITableView

我有一个 UINavigationController 和一个 UITabBarController 作为它的 rootViewController,然后将一个 UITableView 放在一个选项卡中(UIViewController)

当我切换到一个包含 UITableView 的 tabController 时,导航栏下 tableView 的第一个单元格。如果我推送另一个视图控制器,然后弹回,tableview 重新布局正确。如何在开始时使其布局正确。

【问题讨论】:

    标签: ios uitableview


    【解决方案1】:

    viewWillAppear中做布局可以解决问题

    【讨论】:

    • 如何在 viewWillAppear 中进行布局覆盖 func viewWillAppear(animated: Bool) { super.viewWillAppear(animated) .... 这里是什么 }
    • 设置tableview的框架;或者使用自动布局(强烈推荐砌体)@Chris
    【解决方案2】:

    我解决了。这是 topLayoutGuide 的问题,通过覆盖 topLayoutGuide 属性来修复它(Swift)

    override var topLayoutGuide:UILayoutSupport {
        get { return (self.parentViewController?.topLayoutGuide)! }
    }
    
    override var bottomLayoutGuide:UILayoutSupport {
        get { return (self.parentViewController?.bottomLayoutGuide)! }
    }
    

    (目标 C)

    (id<UILayoutSupport>) topLayoutGuide {
    return self.parentViewController.topLayoutGuide;
    

    }

    • (id) bottomLayoutGuide { 返回 self.parentViewController.bottomLayoutGuide; }

    • (void) viewWillLayoutSubviews { [超级视图WillLayoutSubviews]; //这里需要NSLog,只是调用getter,不知道为什么在Objective C中默认不调用getter NSLog(@"%@", self.topLayoutGuide); }

    • (void) viewDidLayoutSubviews { [超级 viewDidLayoutSubviews]; //这里需要NSLog,只是调用getter,不知道为什么在Objective C中默认不调用getter NSLog(@"%@", self.topLayoutGuide); }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 2013-08-11
      • 1970-01-01
      • 2011-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多