Полноэкранные UIView со Строкой состояния и Панелью навигации накладывают на вершине

Ошибка синтаксиса: ошибка синтаксиса, неожиданный T_ENCAPSED_AND_WHITESPACE

Эта ошибка чаще всего встречается при попытке ссылаться на значение массива с помощью ключевого слова для интерполяции внутри строки с двумя кавычками , когда вся конструкция комплексной переменной не заключена в {}.

Случай ошибки:

Это приведет к Unexpected T_ENCAPSED_AND_WHITESPACE:

echo "This is a double-quoted string with a quoted array key in $array['key']";
//---------------------------------------------------------------------^^^^^

Возможные исправления:

В строке с двойными кавычками PHP разрешает использовать строки ключей ключей без кавычек и не выдаст E_NOTICE. Таким образом, вышесказанное может быть записано как:

echo "This is a double-quoted string with an un-quoted array key in $array[key]";
//------------------------------------------------------------------------^^^^^

Вся сложная переменная массива и ключ (ы) могут быть заключены в {}, и в этом случае они должны быть указаны чтобы избежать E_NOTICE. Документация PHP рекомендует этот синтаксис для сложных переменных.

echo "This is a double-quoted string with a quoted array key in {$array['key']}";
//--------------------------------------------------------------^^^^^^^^^^^^^^^
// Or a complex array property of an object:
echo "This is a a double-quoted string with a complex {$object->property->array['key']}";

Конечно, альтернатива любой из вышеперечисленного заключается в объединении переменной массива in вместо интерполировать его:

echo "This is a double-quoted string with an array variable " . $array['key'] . " concatenated inside.";
//----------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^

Для справки см. раздел «Переменная синтаксический анализ» в странице руководства PHP Strings

51
задан User 3 September 2014 в 05:52
поделиться

5 ответов

В снимке экрана выше, существует полупрозрачная строка состояния и полупрозрачная панель навигации.

строка состояния установлена с помощью

[[UIApplication sharedApplication] setStatusBarStyle: UIStatusBarStyleBlackTranslucent];

, панель навигации установлена с помощью

theNavigationController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
23
ответ дан August 7 November 2019 в 10:12
поделиться

Лучшим способом я подошел, было это: при использовании "сложной" иерархии Панели вкладок, содержащей контроллеры навигации, с одним представлением "детали", являющимся полноэкранным представлением.

В делегате приложения непосредственно перед тем, как представление контроллера панели вкладок добавляется к окну, я добавил это:

tabBarController.view.frame = [[UIScreen mainScreen] bounds];

Это заставит контроллер панели вкладок покрыть весь экран, даже ниже области строки состояния. Я должен был сместить высоты нескольких представлений к +20px, особенно панели навигации.

4
ответ дан Alfons 7 November 2019 в 10:12
поделиться

Установите стиль строки состояния как черный стиль полупрозрачной и панели навигации как черный полупрозрачный. При использовании основанного на навигации приложения в проверке MainWindow.xib, что строка состояния скрыта, и панель навигации является скрытыми флажками.

, Когда пользователь касается экрана, запустите таймер, чтобы видеть, было ли это единственным касанием или двойным выстрелом. Если единственное касание, сделайте строку состояния и navbar скрытыми = НЕТ. и как только пользовательское действие останавливается, запустите таймер снова. через какое-то время никакого действия, сделайте их скрытыми снова.

0
ответ дан lostInTransit 7 November 2019 в 10:12
поделиться

Просто установите «требуется полноэкранный макет» в вашем контроллере представления. Это решает для меня проблему.

self.wantsFullScreenLayout = YES;
45
ответ дан 7 November 2019 в 10:12
поделиться

Если у вас есть контроллер представления внутри контроллера навигации, и вы хотите скрыть строку состояния, чтобы вид вашего viewController отображался в полноэкранном режиме, вы всегда можете вызвать:

[self.navigationController.view setNeedsLayout];

после скрытия строка состояния. Но я лично считаю, что

[self setWantsFullScreenLayout:YES];

- лучший способ.

14
ответ дан 7 November 2019 в 10:12
поделиться