2011-12-19 26 views
1

我将UILabel和UIActivityIndi​​catorView作为子视图添加到tableview中作为加载指示符。我希望这些项目位于可见的表格视图的中间,如果用户滚动,则保留在中心位置,以便用户始终可以看到项目。我创建它们的代码是:UILabel和UIActivityIndi​​catorView居中在UITableView的可见区域

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]; 
    } 

如何在表格视图滚动时使其重新定位?

编辑

我将如何计算重新定位的微调,以中间的大小?我会设置什么属性?

+0

它是UIViewController还是UITableViewController? – Emon 2011-12-20 04:17:20

+0

这是一个UITableViewController,其中上面的代码正在运行,并且表视图是标签/活动指示器应显示的位置。 – charleyh 2011-12-20 04:19:33

回答

2
  1. 添加视图以表视图的上海华(如果可能的话; UITableViewController使得这是不可能的)

  2. 添加视图表视图和-scrollViewDidScroll:委托方法将其重新定位(UITableViewDelegate是一个的UIScrollViewDelegate子协议)

EDIT

用于维护视图的中心

-(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; 
} 
+0

我该如何计算数学来计算当前可见区域的中心?我对框架,边界,中心和所有其他事情有点困惑,并且非常感谢一些帮助。 – charleyh 2011-12-20 04:53:05

+0

谢谢!什么是adView代表虽然?这是否应该以中心为观点?那么actualAdSize方法呢?那是什么方法?只要我获得足够的声誉,我就会投票给你。 – charleyh 2011-12-20 15:00:51

+0

当我应该调用actualAdSize时,获得了多大的尺寸? – charleyh 2011-12-20 21:35:15

相关问题