Мой вид показывает y = -20 несмотря на то, что его кадр установлен в y = 0. После вращения он возвращается к y = 0 - PullRequest
2 голосов
/ 13 июня 2010

Я начал с создания универсального оконного приложения.Начиная с версии для iPhone, я создал UIViewController и связанный с ним кончик.

Мой делегат приложения:

rootViewController = [[RootViewController alloc] initWithNibName:nil bundle:nil];
[window makeKeyAndVisible];
[window addSubview:rootViewController.view];
return YES;

Мой RootViewController:

- (void)viewDidLoad {
[super viewDidLoad];
adBannerView = [[ADBannerView alloc] initWithFrame:CGRectZero()];
[self.view addSubview:adBannerView];

}

Я пытался создать кнопки вместо adBanner и Iполучить тот же результат.

Перо моего RootViewController не изменилось, так как X-код создал его для меня.Мой MainWindow_iPhone.xib также есть в наличии.

Что вызывает это?

Обновление

После изменения ориентации приложения adBannerView (или кнопка ...)) зафиксируется в правильном месте при y = 0.Я попытался установить для местоположения y в adBannerView, предположительно, 20, чтобы компенсировать строку состояния, и это заставляет все отображаться правильно, пока я не изменю ориентацию.Тогда все сместится на 20 пикселей вниз и оставит пространство в 20 пикселей между adBannerView и строкой состояния.

Ответы [ 3 ]

6 голосов
/ 24 июня 2010

Попробуйте добавить следующую строку в viewDidLoad (сразу после [super viewDidLoad];):

self.view.frame = [[UIScreen mainScreen] applicationFrame];
0 голосов
/ 21 июня 2010

Вы должны установить идентификатор размера перед добавлением вида:

- (void)viewDidLoad {
[super viewDidLoad];
adBannerView = [[ADBannerView alloc] initWithFrame:CGRectZero()];

if(UIInterfaceOrientationIsPortrait([[UIDevice currentDevice] orientation]))
    adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier320x50;
else
    adBannerView.currentContentSizeIdentifier = ADBannerContentSizeIdentifier480x32;


[self.view addSubview:adBannerView];

// now you can treat it like any other subview
// For example, if you want to move it to the bottom of the view, do this:

CGRect frame = adBannerView.frame;
frame.origin.y = self.view.frame.size.height - frame.size.height;
[adBannerView setFrame:frame];

}

Всякий раз, когда интерфейс вращается, вы должны уведомить баннер об изменении его размера.

Предполагая, что у вас есть доступ к видео WWDC (которое доступно бесплатно), проверьте сеанс видео 305. Он демонстрирует добавление баннера.

0 голосов
/ 16 июня 2010

CGRectZero буквально является нулевым прямоугольником (0, 0, 0, 0), поэтому ADBannerView никогда не должен отображаться, если он действительно имеет ширину и высоту 0. Возможно, вы захотите попробовать initWithFrame:self.view.frame или около того ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...