gpt4 book ai didi

ios - UILabel 和 UIActivityIndi​​catorView 以 UITableView 的可见区域为中心

转载 作者:行者123 更新时间:2023-11-29 11:18:02 26 4
gpt4 key购买 nike

我将 UILabel 和 UIActivityIndi​​catorView 作为 subview 添加到 TableView 中作为加载指示器。我希望这些项目位于 TableView 的可见区域的中间,并且如果用户滚动则保留在中心,因此用户将始终看到这些项目。我创建它们的代码是:

if (!spinner) {
spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
[spinner startAnimating];

loadingLabel = [[UILabel alloc] initWithFrame:CGRectZero];
loadingLabel.font = [UIFont systemFontOfSize:20];
loadingLabel.textColor = [UIColor grayColor];
loadingLabel.text = @"Loading...";
[loadingLabel sizeToFit];

static CGFloat bufferWidth = 8.0;

CGFloat totalWidth = spinner.frame.size.width + bufferWidth + loadingLabel.frame.size.width;

CGRect spinnerFrame = spinner.frame;
spinnerFrame.origin.x = (self.tableView.bounds.size.width - totalWidth) / 2.0;
spinnerFrame.origin.y = (self.tableView.bounds.size.height - spinnerFrame.size.height) / 2.0;
spinner.frame = spinnerFrame;
spinner.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
[self.tableView addSubview:spinner];

CGRect labelFrame = loadingLabel.frame;
labelFrame.origin.x = (self.tableView.bounds.size.width - totalWidth) / 2.0 + spinnerFrame.size.width + bufferWidth;
labelFrame.origin.y = (self.tableView.bounds.size.height - labelFrame.size.height) / 2.0;
loadingLabel.frame = labelFrame;
loadingLabel.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin);
[self.tableView addSubview:loadingLabel];
}

table view 滚动时如何让它居中?

编辑

我如何计算将微调器重新定位到中间的尺寸?我要设置什么属性?

最佳答案

  1. 将您的 View 添加到 TableView 的 super View (如果可能;UITableViewController使这不可能)

  2. 将您的 View 添加到 TableView 并在 -scrollViewDidScroll: 委托(delegate)方法中重新定位它(UITableViewDelegateUIScrollViewDelegate< 的子协议(protocol))

编辑:

为了保持 View 的中心

-(void)scrollViewDidScroll:(UIScrollView *)scrollView{ 

CGSize adSize = [awView actualAdSize];

CGRect newFrame = awView.frame; newFrame.origin.x = (self.view.bounds.size.width - adSize.width)/2;

newFrame.origin.y = (self.tableView.contentOffset.y - adSize.height/2) -21;

awView.frame = newFrame;
}

关于ios - UILabel 和 UIActivityIndi​​catorView 以 UITableView 的可见区域为中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8567618/

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