gpt4 book ai didi

iphone - 我正在尝试将 UIActivityIndi​​catorView 置于 UITableView 的中心,但它具有最高边距

转载 作者:搜寻专家 更新时间:2023-10-30 20:00:49 25 4
gpt4 key购买 nike

我在 Snow Leopard 上使用 Xcode 4.2。我正在尝试做什么。基本上,我有一个带有 TableView 的主视图 Controller 。为了填充表格 View ,我需要调用 API 并从那里下载信息。

从 API 下载数据时,我想显示一个事件指示器,以便让用户知道发生了什么事情并且应用程序没有卡住。

我所做的是在表格 View 上创建了一个新的 UIView,alpha 值为 0.5,并在其中间放置了一个事件指示器。这是我在主 Controller View 加载时执行的代码:

// Show the activity indicator
self.overlayView = [[UIView alloc] init];
self.overlayView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
self.overlayView.frame = self.tableView.frame;
self.activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
CGRect frame = self.overlayView.frame;
self.activityIndicator.center = CGPointMake(frame.size.width/2, frame.size.height/2);
[self.overlayView addSubview:self.activityIndicator];
[self.activityIndicator startAnimating];
[self.tableView addSubview:self.overlayView];

当从 API 加载数据时,我隐藏叠加 View 和事件指示器:

[self.activityIndicator removeFromSuperview];
[self.overlayView removeFromSuperview];

它工作正常,但问题是叠加 View 未正确对齐,它有上边距并且看起来不太好。这是它的样子:

enter image description here

最佳答案

不要使用

self.overlayView.frame = self.tableView.frame;

改为使用

self.overlayView.frame = self.tableView.bounds;

看起来你的 tableView 有 origin.y = 20.0f;


其他说明

  • UIView 的指定初始化器是 initWithFrame: 所以你应该使用它。

  • 你可以简单的这样

      self.activityIndicator.center = CGPointMake(frame.size.width/2, frame.size.height/2);

      self.activityIndicator.center = self.overlayView.center;

关于iphone - 我正在尝试将 UIActivityIndi​​catorView 置于 UITableView 的中心,但它具有最高边距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10050568/

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