私は、UILabelとUIActivityIndicatorViewをローディングインジケータとしてtableviewにサブビューとして追加しています。私は、これらのアイテムがテーブルビューの目に見えるものの真ん中にあり、ユーザがスクロールすると中央に留まるようにしたいので、ユーザは常にアイテムを見るでしょう。それらを作成するために私のコードは次のとおりです。UITableViewの可視領域にUILabelとUIActivityIndicatorViewの中心を合わせる
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];
}
は、どのように私はそれrecenterはテーブルビューをスクロールすることができますか?私は真ん中にスピナーを再配置するためにサイズを計算する方法を
EDIT
?どんなプロパティを設定しますか? (; UITableViewController
はこの不可能、可能な場合)UITableViewDelegate
がある(
テーブルビューにビューを追加し、-scrollViewDidScroll:
デリゲートメソッドでそれを再配置
UIViewControllerまたはUITableViewControllerですか? – Emon
これは、上記のコードが実行されているUITableViewControllerであり、テーブルビューはラベル/アクティビティインジケータが表示される場所です。 – charleyh