Использовать полупрозрачное изображение PNG или использовать CSS3:
background-color:rgba(255,0,0,0.5);
Вот статья css3.info, Opacity, RGBA и компромисс (2007-06-03).
Обратите внимание, что этот ответ сейчас сильно устарел /
Этот ответ является всего лишь историческим курьезом .
Замечательные новости! Как обнаружил Эндрю ниже, эта проблема была исправлена Apple в версии 4.0+.
Похоже, больше НЕТ необходимости навязывать размер вида для каждого вида, и конкретная серьезная проблема ландшафта, «работающего только в первый раз», была решена.
По состоянию на апрель 2011 года невозможно протестировать или даже построить что-либо ниже 4.0, поэтому вопрос является чисто историческим курьезом. Невероятно, сколько хлопот это доставляло разработчикам так долго!
Вот исходное обсуждение и решение. Сейчас это совершенно неактуально, поскольку эти системы даже не работают.
ЧРЕЗВЫЧАЙНО ТРУДНО заставить эту работу работать полностью - есть как минимум три проблемы / ошибки.
попробуйте это .. ландшафтный дизайн построителя интерфейса
Обратите внимание, в частности, что там, где сказано «и вам нужно правильно использовать shouldAutorotateToInterfaceOrientation везде» , это означает везде, во всех ваших полноэкранных представлениях.
Надеюсь, это поможет в этом кошмаре!
Важное напоминание о ДОПОЛНИТЕЛЬНОЙ широко известной проблеме: если вы пытаетесь переключиться между БОЛЬШЕ ОДНОГО представления (все альбомные), ЭТО ПРОСТО НЕ РАБОТАЕТ . Об этом важно помнить, иначе вы потратите дни на решение проблемы. Это буквально НЕ ВОЗМОЖНО. Это самая большая открытая и известная ошибка на платформе iOS. Буквально невозможно заставить аппаратное обеспечение делать второй вид, который вы загружаете, альбомным. Раздражающий, но простой обходной путь, и то, что вы должны сделать, - это иметь тривиальный главный UIViewController, который ничего не делает, кроме как сидеть и позволять вам переключаться между вашими представлениями.
Другими словами, в iOS из-за серьезной ошибки знания:
[window addSubview:happyThing.view];
[window makeKeyAndVisible];
Вы можете сделать это только один раз .Позже, если вы попытаетесь удалить happyThing.view и вместо этого вставить newThing.view, ЭТО НЕ РАБОТАЕТ - И ЭТО ТАКОЕ. Аппарат никогда не повернет вид на альбомный. Здесь нет никаких уловок, даже Apple не может заставить его работать. Обходной путь, который вы должны принять, - это иметь общий UIViewController, который просто сидит там и просто хранит ваши различные представления (happyThing, newThing и т. Д.). Надеюсь, это поможет!
От Сайта Apple Dev:
Для запущения приложения в альбомном режиме так, чтобы строка состояния сразу была в соответствующем положении отредактируйте файл Info.plist для добавления ключа UIInterfaceOrientation с соответствующим значением (UIInterfaceOrientationLandscapeRight или UIInterfaceOrientationLandscapeLeft), как показано в Списке 2 Списков 2.
: Запущение Вашего приложения в альбомном режиме
<key>UIInterfaceOrientation</key> <string>UIInterfaceOrientationLandscapeRight</string>
ответ sasb и michaelpryor, кажется, корректен, но если он не работает на Вас, попробуйте эту альтернативу:
- (void)applicationDidFinishLaunchingUIApplication *)application {
application.statusBarOrientation = UIInterfaceOrientationLandscapeRight;
}
Или этот:
[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];
Или этот:
[application setStatusBarOrientation: UIInterfaceOrientationLandscapeRight animated:NO];
Вам, вероятно, также придется звонить window makeKeyAndVisible;
сначала.
Несколько ссылок: Разработка в альбомном режиме , iPhone SDK: Как вызвать Альбомный режим только?
@Robert: обратитесь к iPhone SDK, NDA и Переполнение стека .
Последнее Руководство по программированию iPhone OS имеет полный раздел по этому с примером кода. Я уверен, что это - недавнее дополнение, поэтому возможно, Вы пропустили его. Это объясняет все условия, которые необходимо выполнить; в основном...
Ищут "Запуск в Альбомном режиме", страница 102.
Резюме и интеграция из всех сообщений, после того, как я протестировал это сам; проверьте обновление для 4.x, 5.x ниже.
Начиная с версии 3.2 вы не можете изменить ориентацию запущенного приложения из кода.
Но вы можете запустить приложение с фиксированной ориентацией, хотя сделать это не так просто.
Попробуйте воспользоваться этим рецептом:
UISupportedInterfaceOrientations
в файле Info.plist
shouldAutorotateToInterfaceOrientation:
(чтобы он возвращал то же значение, которое вы определили в plist, конечно)во всех контроллерах представления установите фоновый вид с помощью
self.view.frame = CGRectMake(0, 0, 480, 320)
в методе viewDidLoad
.
Обновление (iOS 4.x, 5.x): в руководстве по программированию приложений Apple iOS в главе "Дополнительные приемы работы с приложениями" есть параграф "Запуск в ландшафтном режиме".
Ссылки: