Вопрос

Редактирование, чтобы спросить, помогает ли Autolayout в этой ситуации?

Как я могу заставить мою Uilabel сохранить фиксированное положение на экране, но все же вращается? Должена оуторотатетоинтерфейс -аоооотасия возвращается «да», и этикетка вращается просто хорошо, но независимо от того, как я устанавливаю стойки пружины в xcode. Положение метки меняется.

Первое изображение показывает, как я создал макет в раскадровке с четырьмя отдельными Uilabels. Второе изображение показывает, как появляется пейзаж, а не то, что я хочу. Третье изображение показывает, как я бы хотел, чтобы ландшафт выглядел, с анимацией вращения каждого числа, сосредоточенной на самом номере.

This is how I've created the layout in storyboard, with four individual UILabels. This is how landscape appears -- not what I want. Here is what I would like landscape to look, with the rotation animation of each number centered on the number itself.

Это было полезно?

Решение

VRK на правильном пути со своим ответом, но shouldAutorotateToInterfaceOrientation: не правильный метод, в котором можно разместить эти этикетки. Когда вы получаете shouldAutorotateToInterfaceOrientation:, пока ничего не было обновлено для новой ориентации.

Вы должны изложить свои взгляды в willAnimateRotationToInterfaceOrientation:duration:. Анкет В качестве документация состояния:

К тому времени, когда этот метод называется, interfaceOrientation Свойство уже установлено на новую ориентацию, и границы представления были изменены. Таким образом, вы можете выполнить любой дополнительный макет, требуемый вашим представлением в этом методе.

Вы могли бы даже оживить ваши взгляды на свои новые позиции в этом методе.

Другие советы

Вы можете выполнить вращение на этикетках (преобразование). Сделайте это на методе интерфейс -ориентации DidRotate от Uiviewcontroller.

uilabel.transform = cgaffinetransformmakerotation (m_pi / -4); как это. Выполните это на всех четырех ориентации. И одна вещь берет ориентацию Statusbar от AppDelegate, кроме ориентации устройства. Это поможет вам сохранить синхронизацию с ориентацией на просмотр.

Вам необходимо установить значения позиции кадра метки вручную в методе shopautorotateTeclainfaceorientation

Создайте два Uilabels, один горизонтально и другой вертикально. Скрыть и показать необходимую метку при изменении ориентации. Для этого вы должны поместить в ViewDiddload:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:@"UIDeviceOrientationDidChangeNotification" object:nil];

и реализовать

- (void) didRotate:(NSNotification *)notification{

       UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];

       if (orientation == UIDeviceOrientationLandscapeLeft)
       {

          // show Horizontal Label
       }
       ....
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top