Я пишу программу, в которой используется UIProgressView, который добавляется программно и скрывается/отображается во время выполнения программы. У меня есть следующий код, который работал в iOS 5. Код добавляет UIProgressView «ниже» UITableView, добавляя UIProgressView в качестве подвида супервизора UITableView. Это также удерживает UIProgressView в одном месте, пока UITableView прокручивается.
В viewDidLoad я установил фрейм UIProgressView
UIProgressView * progressBar = [[[UIProgressView alloc]
initWithProgressViewStyle:UIProgressViewStyleBar] retain];
progressBar.hidden = NO;
progressBar.progress = [[NSUserDefaults standardUserDefaults] floatForKey:@"progress"];
//Set up the UIProgressView
frameForProgressBar = CGRectMake(0.0f,
self.tableView.frame.origin.y +
self.tableView.frame.size.height -
progressBar.frame.size.height,
self.tableView.frame.size.width,
progressBar.frame.size.height);
progressBar.frame = frameForProgressBar;
insetsForTableView = UIEdgeInsetsMake(0.0, progressBar.frame.size.height, 0.0, 0.0);
а затем, когда я хочу, чтобы появился UIProgressView
// Add the Progress bar to the Window
progressBarState = ADD_PROGRESS_BAR;
[self.view.superview addSubview:progressBar];
и чтобы я мог видеть UIProgressView, я меняю contentInsets UITableView. Я читал, что для адаптации к iOS 7 изменения в contentInsets должны происходить в viewWillLayoutSubviews.
-(void) viewWillLayoutSubviews
{
switch (progressBarState)
{
case ADD_PROGRESS_BAR:
// Set the frame of the UITableView to allow the UIProgressView to appear
self.tableView.contentInset = insetsForTableView;
break;
case REMOVE_PROGRESS_BAR:
self.tableView.contentInset = UIEdgeInsetsZero;
break;
default:
break;
}
progressBarState = UNDEFINED_PROGRESS_BAR;
}
Я запускаю этот код через отладчик, и вызывается viewWillLayoutSubviews. Однако я не вижу изменения размера UITableView и не вижу UIProgressView. Я попытался установить рамку для UITableView, чтобы сделать ее намного меньше экрана, а затем установить рамку для UIProgressView, которая поместила бы ее в «пустое» пространство. Но я все еще не мог увидеть UIProgressView.
Может кто-нибудь подсказать, почему я не вижу UIProgressView?
Спасибо,
Джейсон Маззотта