OpenFlow: как правильно настроить отображение кадра в ландшафтном режиме? - PullRequest
0 голосов
/ 24 мая 2011

Я пытаюсь использовать AFOpenFlowView в ландшафтном режиме, но я получаю черную полосу, как будто установленная рамка не пересекает строку состояния или, что лучше, не за рамку, где строка состояния находится в портретном режиме.

Вот код, который я использую:

CGRect applicationFrame = [[UIScreen mainScreen] bounds];

AFOpenFlowView *af = [[AFOpenFlowView alloc] initWithFrame:CGRectMake(0, 0, applicationFrame.size.height, applicationFrame.size.width)];
[af setBackgroundColor:[UIColor whiteColor]];

NSString *imageName;
for (int i = 0; i < 9; i++) {
    imageName = [[NSString alloc] initWithFormat:@"picture_%d.png", i];
    [af setImage:[UIImage imageNamed:imageName] forIndex:i];
    [imageName release];
}

[af setNumberOfImages:9];
[af setViewDelegate:self];

[self setView:af];
[af release];

Вот изображение, чтобы показать, что происходит: enter image description here

Ответы [ 2 ]

0 голосов
/ 27 мая 2011

Мне очень жаль, что вы нашли время. В конце я узнал, каково было решение: я инициализировал окно с рамкой приложения, т.е.

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];

вместо использования правильного кода

window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
0 голосов
/ 24 мая 2011

applicationFrame.size.height даст вам высоту минус строка состояния.Он не принимает во внимание, что ваш телефон находится в альбомном режиме.

Просто добавьте размер как 480 x 300.

Можете ли вы попробовать следующий оператор отладки:

NSLog(@"Af frame: &@", NSStringFromCGRect(af.frame));
NSLog(@"Application frame: %@",NSStringFromCGRect(applicationFrame));
...