Вам нужно объявить пространство имен в XSLT и использовать его в выражениях XPath. Например ::
<xsl:stylesheet ... xmlns:my="http://www.mysite.com">
<xsl:template match="/my:MyRoot"> ... </xsl:template>
</xsl:stylesheet>
Обратите внимание, что вы должны предоставить некоторый префикс, если вы хотите ссылаться на элементы из этого пространства имен в XPath. Хотя вы можете просто сделать xmlns="..."
без префикса, и он будет работать для литеральных элементов результата, он не будет работать для XPath - в XPath, неподписанное имя всегда считается в пространстве имен с пустым URI, независимо от xmlns="..."
в области.
Когда вы держите iPad в альбомной ориентации и запускаете приложение, контроллер вида изначально видит границы для портретной ориентации (даже если ориентация сообщает о альбомной ориентации). Затем контроллер представления получит сообщение для поворота в альбомную ориентацию, прежде чем оно появится.
[[UIScreen mainScreen] applicationFrame]
всегда будет возвращать портретный прямоугольник, даже если приложение находится в ландшафтном режиме. Это связано с тем, что UIWindow
никогда фактически не вращается, а просто изменяет преобразование rootViewController.view
.
Чтобы убедиться, что вы можете напечатать объект корневого обзора в портретном и ландшафтном режимах, вы увидите что-то вроде этого:
Портрет:
<UIView: 0x96290e0; frame = (0 20; 768 1004); ...
Пейзаж:
<UIView: 0x96290e0; frame = (0 20; 768 1004); transform = [0, 1, -1, 0, 0, 0]; ...
Я никогда не полагаюсь на [[UIScreen mainScreen] applicationFrame]
, особенно во время запуска приложения.
При создании представлений в коде используйте суперпредставление для установки кадра.
Если вы используете xibs с «симулированными элементами интерфейса», они будут иметь правильный размер и все будет отлично работать.
Приложения на основе UINavigationController
В случае приложения на основе UINavigationController возьмите кадр непосредственно из self.navigationController.view
, не пытайтесь использовать [self loadView]
и self.view.superview
. UINavigationController использует «скрытые» подпредставления для выполнения своей работы, поэтому прямое суперпредставление не будет работать.
UINavigationController является особенным, потому что во время запуска приложения контроллер навигации изменяет размеры ваших представлений после вызова loadView
. При автоматическом изменении размера вы получаете небольшой запас в нижней части экрана.
Почему бы не UIScreen
[[UIScreen mainScreen] applicationFrame]
не работает надежно (особенно во время запуска приложения в альбомной ориентации). Мой опыт показывает, что свойство viewcontroller interfaceOrientation
не будет соответствовать ориентации applicationFrame
.
Это так, как задумано. Вам следует запросить размер вашего супервизора и при необходимости скорректировать его.