Я много искал по этому поводу и не могу найти ничего, чтобы помочь мне.
У меня есть UIViewController, содержащийся в другом UIViewController. Когда родительский UIViewController вращается, скажем, из Portrait в LandscapeLeft, я хочу, чтобы это выглядело так, как будто ребенок не вращался. Так сказать. Я хочу, чтобы ребенок имел одинаковую ориентацию на небо независимо от ориентации родителей. Если он имеет UIB-кнопку, которая находится в вертикальном положении в Portrait, я хочу, чтобы правая сторона кнопки была "вверху" в UIInterfaceOrientationLandscapeLeft.
Возможно ли это? В настоящее время я делаю такие грубые вещи, как это:
-(void) rotate:(UIInterfaceOrientation)fromOrientation: toOr:(UIInterfaceOrientation)toOrientation
{
if(((fromOrientation == UIInterfaceOrientationPortrait) && (toOrientation == UIInterfaceOrientationLandscapeRight))
|| ((fromOrientation == UIInterfaceOrientationPortraitUpsideDown) && (toOrientation == UIInterfaceOrientationLandscapeLeft)))
{
}
if(((fromOrientation == UIInterfaceOrientationLandscapeRight) && (toOrientation == UIInterfaceOrientationPortraitUpsideDown))
|| ((fromOrientation == UIInterfaceOrientationLandscapeLeft) && (toOrientation == UIInterfaceOrientationPortrait)))
{
}
if(((fromOrientation == UIInterfaceOrientationPortrait) && (toOrientation == UIInterfaceOrientationLandscapeLeft))
|| ((fromOrientation == UIInterfaceOrientationPortraitUpsideDown) && (toOrientation == UIInterfaceOrientationLandscapeRight)))
{
}
if(((fromOrientation == UIInterfaceOrientationLandscapeLeft) && (toOrientation == UIInterfaceOrientationPortraitUpsideDown))
|| ((fromOrientation == UIInterfaceOrientationLandscapeRight) && (toOrientation == UIInterfaceOrientationPortrait)))
{
}
if(((fromOrientation == UIInterfaceOrientationPortrait) && (toOrientation == UIInterfaceOrientationPortraitUpsideDown))
|| ((fromOrientation == UIInterfaceOrientationPortraitUpsideDown) && (toOrientation == UIInterfaceOrientationPortrait)))
{
}
if(((fromOrientation == UIInterfaceOrientationLandscapeLeft) && (toOrientation == UIInterfaceOrientationLandscapeRight))
|| ((fromOrientation == UIInterfaceOrientationLandscapeRight) && (toOrientation == UIInterfaceOrientationLandscapeLeft)))
{
}
}
, который выглядит как совершенно бесполезная трата кода. Кроме того, я планировал использовать CGAffineTransform (как указано здесь: http://www.crystalminds.nl/?p=1102), но я не уверен, стоит ли мне изменять размеры представления в соответствии с тем, что будет после поворота.
Большой кошмар здесь заключается в том, что вы должны отслеживать глобальную переменную ориентации. Если вы этого не сделаете, иллюзия потеряна, и ViewController повернут во что угодно.
Я мог бы действительно помочь с этим, спасибо!