В тестировании пользовательского интерфейса Xcode можно получить ориентацию вида

Для своего приложения я пытаюсь запустить базовый тест пользовательского интерфейса на предмет того, остается ли представление фиксированным в своей ориентации при вращении фактического устройства. Я знаю, как имитировать физическое вращение (используя UIDeviceOrientation), но есть ли способ получить ориентацию фактического вида?


person will3321    schedule 09.03.2016    source источник
comment
Поскольку представления на самом деле не имеют понятия ориентации, совсем не ясно, о чем вы пытаетесь спросить.   -  person David Berry    schedule 10.03.2016
comment
Думаю, вопрос можно было бы перефразировать. Можете ли вы на самом деле проверить, что ваше приложение НЕ вращается, когда ориентация устройства изменяется на .Landscape? Если ДА, то как? Кстати, я сам изучаю это.   -  person Alexandros Spyropoulos    schedule 25.05.2016


Ответы (2)


Вы можете получить ориентацию, используя эту строку

XCUIDevice.sharedDevice().orientation
person Tharak    schedule 10.03.2016
comment
Я думаю, вопрос в том, можете ли вы получить ориентацию вида, это имитирует ориентацию устройства. То есть пользователь хочет убедиться, что ориентация вида (бессмысленная концепция, но...) остается неизменной независимо от ориентации устройства. - person David Berry; 10.03.2016
comment
Он сказал, что может имитировать вращение, поэтому ему нужно проверить текущую ориентацию, смоделировать вращение и проверить, изменилась ли ориентация. - person Tharak; 10.03.2016
comment
Извините, я новичок в iOS-разработке. Вы правы, Давид, именно об этом я и спрашиваю. Как вы думаете, позволяет ли тестирование пользовательского интерфейса проводить такие тесты? - person will3321; 11.03.2016
comment
этот тест работает, но вы не видите, как происходит вращение XCUIDevice.sharedDevice().orientation = .LandscapeLeft XCTAssertTrue(XCUIDevice.sharedDevice().orientation == .LandscapeLeft) XCUIDevice.sharedDevice().orientation = .Portrait XCTAssertTrue(XCUIDevice.sharedDevice().orientation == .Portrait) - person Tharak; 14.03.2016
comment
Ответ неуместен и вводит в заблуждение. Вопрос касается приложения, представления, а не устройства. - person Alexandros Spyropoulos; 25.05.2016

Я нашел обходной путь. Это не здорово, но это делает работу. Я постараюсь найти более элегантный способ, если он есть.

Что вам нужно сделать, так это найти интерфейс и проверить его ориентацию. В моем случае я хочу проверить, что пользовательский интерфейс остается в ориентации .Portrait, когда мое устройство поворачивается в .Landscape.

func testSPSCLaunchScreenLandscape() {
    // Use recording to get started writing UI tests.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    XCUIDevice.sharedDevice().orientation = .LandscapeLeft
    XCTAssert(UIInterfaceOrientationIsPortrait(UIApplication.sharedApplication().statusBarOrientation))
}
person Alexandros Spyropoulos    schedule 25.05.2016
comment
Это не работает для меня. Я все еще получаю .LandscapeLeft - person Edward Ford; 21.11.2017