uiprogressview не отображается под uitableview в iOS 7

Я пишу программу, в которой используется 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?

Спасибо,

Джейсон Маззотта


person user2985081    schedule 01.03.2014    source источник


Ответы (1)


Установите для свойства AutomaticAdjustsScrollViewInsets UIViewController значение NO. Поскольку это свойство доступно для iOS 7 и более поздних версий, проверьте доступность с помощью метода responseToSelector.

person dev gr    schedule 01.03.2014
comment
Привет, разработчик гр. Спасибо за ответ. Я попробовал это, и я не вижу никаких изменений. - person user2985081; 01.03.2014
comment
Где вы устанавливаете свойство? - person dev gr; 01.03.2014
comment
Мне удалось заменить UITableViewController на UIViewController. С некоторыми изменениями теперь я могу видеть обновление UIProgressView вместе с содержимым таблицы. Спасибо за вашу помощь. - person user2985081; 03.03.2014