gpt4 book ai didi

ios - UITableViewController 在应用程序重新进入前台并变为事件状态时更改 UITableView 的框架

转载 作者:行者123 更新时间:2023-11-28 21:59:04 25 4
gpt4 key购买 nike

我有一个 UITableViewController,它嵌入在 UITabBarController 中,也由 UINavigationController 管理。

我唯一能够自定义 UITableViewController 的 TableView 框架的地方是 viewDidAppear:

- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:YES];

[self customizeTableViewAppearance];
}

这是 customizeTableViewAppearance 方法:

- (void)customizeTableViewAppearance
{
self.tableView.contentInset = UIEdgeInsetsMake(20, 0, 0, 0);

if([UIScreen mainScreen].bounds.size.height == 568) {

[self.tableView setFrame:CGRectMake(0, 60, 320, 460)];

} else {

[self.tableView setFrame:CGRectMake(0, 60, 320, 370)];

}
}

这在第一次使用该应用程序时非常有效,但如果您转到设备的主屏幕,然后再次继续使用该应用程序,则不会调用任何常用的 View 方法,并且 TableView 已被移动。因此,无论出于何种原因,即使未调用 View 方法,UITableViewController 也会更改我为其设置的自定义框架 UITableView

果然,如果我移动到另一个选项卡,然后再次访问该选项卡,将调用 View 方法并且 UITableView 的 框架再次正确。

如果用户离开该应用程序,然后稍后再次恢复该应用程序,我该如何做到这一点,我的框架将保持设置状态,而不会被 UITableViewController 重置?

最佳答案

目前还不清楚为什么要操纵 UITableViewControllertableView 的框架,但在大多数情况下,您不应该这样做。

从您粘贴的内容来看,似乎是在试图阻止 tableView 或其内容出现在您的导航栏和标签栏下方。

除了更改 tableView 的框架,您应该尝试以下操作之一:

  • 尝试在初始化 UITableViewController 时设置 self.edgesForExtendedLayout = UIRectEdgeNone

或:

  • 确保 self.automaticallyAdjustsScrollViewInsets = YES 初始化你的 UITableViewController

或者,如果出于某种原因您需要手动管理您的tableViewcontentInset:

  • 确保 self.automaticallyAdjustsScrollViewInsets = NO 在初始化您的 UITableViewController 时。现在实现 viewDidLayoutSubviews 如下

    - (void)viewDidLayoutSubviews
    {
    [super viewDidLayoutSubviews];
    self.tableView.contentInset = UIEdgeInsetsMake(self.topLayoutGuide.length, 0, self.bottomLayoutGuide.length, 0);
    }

编辑:我刚刚看到你在使用 Storyboard。您可以在 Storyboard中设置 edgesForExtendedLayout 或 automaticallyAdjustsScrollViewInsets,或者通过实现 -(void)awakeFromNib; 方法来设置它们。

关于ios - UITableViewController 在应用程序重新进入前台并变为事件状态时更改 UITableView 的框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25559062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com