У меня есть представление, содержащее UITableView.Над таблицей я хотел бы отобразить iAd.Я подумал, что лучшим способом сделать это было бы установить contentInset для таблицы на высоту баннера iAd - пока все хорошо.
Приложение поддерживает ротацию, поэтому у меня есть этот код:
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration {
NSString *bannerSize = (UIInterfaceOrientationIsPortrait(interfaceOrientation)) ? ADBannerContentSizeIdentifierPortrait : ADBannerContentSizeIdentifierLandscape;
int bannerHeight = [ADBannerView sizeFromBannerContentSizeIdentifier:bannerSize].height+1;
iAdBanner.currentContentSizeIdentifier = bannerSize;
[mainTable setContentInset:UIEdgeInsetsMake(bannerHeight, 0, 0, 0)];
}
Это работает при первом повороте, но когда я поворачиваю назад, contentInset, по-видимому, не изменился, фактически каждый раз, когда я поворачиваю устройство, кажется, что оно установлено на «обратное» значение
Но это работает - в том случае, если я пытаюсь прокрутить таблицу, все встает на свои места.
После долгих чтений я добавил следующую строку в конец кода выше:
[mainTable scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:NO];
Это сработало!- НО - я не хочу, чтобы таблица прокручивалась обратно наверх при каждом повороте устройства, поэтому я попробовал это:
[mainTable scrollRectToVisible:CGRectMake(mainTable.contentOffset.y+bannerHeight, 0, 10, 10) animated:NO];
Но если я не наверху таблицы,Появляется оригинальная проблема в том, что заголовок текущего раздела (это обычная таблица) составляет около 20 пикселей слишком высоко или слишком низко, и сразу же исправляется с помощью ручной прокрутки.
Так что теперь я потерян - есть идеи?