view.frame.size.height меняется в UIViewController - PullRequest
2 голосов
/ 20 сентября 2010

В моем представлении у меня есть таблица и рекламный баннер, все они создаются через Interface Builder.Но я заметил, что мой view.frame.size.height, похоже, меняется в процессе исполнения моего приложения, даже если я не изменил размер.

Может кто-нибудь объяснить мне, почему это происходит?

Я перемещаю рекламный баннер за пределы экрана на viewDidLoad, и в этот момент, если я распечатываю self.view.frame.size.height, значение равно 460,00.В настоящее время я также увеличиваю размер tableView, чтобы он занимал место, которое когда-то занимал adBanner, и одновременно перемещал adBanner за экран.

Затем, когда я получаю сообщение bannerViewDidLoadAd, яеще раз распечатайте self.view.frame.size.height, в этот момент это 367,00.Я не понимаю, почему размер представления изменился.

- (void)moveAdvertOffScreen
{
    // Make the table view take up the void left by the banner (320x50 block)

    CGRect originalTableFrame = self.tableView.frame;
    CGFloat newTableHeight = self.view.frame.size.height;

    CGRect newTableFrame = originalTableFrame;
    newTableFrame.size.height = newTableHeight;

    // Position the banner below the table view (offscreen)
    CGRect newBannerFrame = self.adBannerView.frame;
    newBannerFrame.origin.y = newTableHeight;

    self.tableView.frame = newTableFrame;   
    self.adBannerView.frame = newBannerFrame;    
}

- (void)moveAdvertOnScreen
{
    CGRect newBannerFrame = self.adBannerView.frame;    
    newBannerFrame.origin.y = self.view.frame.size.height - newBannerFrame.size.height;

    CGRect originalTableFrame = self.tableView.frame;
    CGFloat newTableHeight = self.view.frame.size.height - newBannerFrame.size.height;

    CGRect newTableFrame = originalTableFrame;
    newTableFrame.size.height = newTableHeight;

    [UIView beginAnimations:@"BannerViewIntro" context:NULL];
    self.tableView.frame = newTableFrame;
    self.adBannerView.frame = newBannerFrame;
    [UIView commitAnimations];  
}

1 Ответ

0 голосов
/ 20 сентября 2010

Какой метод вы используете, чтобы скрыть баннер. Если вы не используете removeFromSuperview: тогда представление будет автоматически изменяться при изменении размера родительского представления (что, в свою очередь, может происходить автоматически для подгонки представления к экрану и т. Д.).

Я бы предложил иметь скрипку с параметрами авторазмера для представления в Интерфейсном Разработчике (на вкладке Размер Инспектора), пока не найдете что-то, что работает.

...