Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 从子视图中控制方向更改_Ios_Xcode_Orientation - Fatal编程技术网

Ios 从子视图中控制方向更改

Ios 从子视图中控制方向更改,ios,xcode,orientation,Ios,Xcode,Orientation,有一个非常大的程序,其中始终有一个仅包含自定义段控制器的superview。此视图位于屏幕顶部,通过多种方式控制导航 因此,问题只出现在少数几个视图控制器中,其中所有内容都是100%以编程方式创建的。本质上,CGRect未在属性动态坐标中定义。但不会因方向改变而重新计算。在子视图中,有人有简单的方法来控制它吗?我将在superview中编写一些代码,以传递到其他子视图的方向。。但必须有更好的办法。想法?两个指针: 可以使用自动调整大小遮罩来确定视图边界更改(即方向更改)时视图会发生什么情况。因此

有一个非常大的程序,其中始终有一个仅包含自定义段控制器的superview。此视图位于屏幕顶部,通过多种方式控制导航

因此,问题只出现在少数几个视图控制器中,其中所有内容都是100%以编程方式创建的。本质上,CGRect未在属性动态坐标中定义。但不会因方向改变而重新计算。在子视图中,有人有简单的方法来控制它吗?我将在superview中编写一些代码,以传递到其他子视图的方向。。但必须有更好的办法。想法?

两个指针:

可以使用自动调整大小遮罩来确定视图边界更改(即方向更改)时视图会发生什么情况。因此,
uiviewsautoresizingflexiblewidth
意味着当边界更改时,视图将与superview成比例地“拉伸”
UIViewAutoResisingFlexibleLeftMargin
意味着您的视图将有效地右对齐,因为左边距将根据宽度等进行调整

有时,仅自动调整遮罩的大小是不够的-可能您必须更改视图在方向上的内容,或者执行复杂的动画。在本例中,在视图控制器中使用
WillAnimateRotationInterfaceOrientation
方法。您的子视图可能有一个自定义的
adjustForOrientation
方法,您可以在调用
willAnimateRotation…
时触发该方法


最后,在iOS 5上,您实际上可以将视图控制器嵌套在视图控制器中,在这种情况下,方向事件会自动传递……但这对于您尝试执行的操作来说可能是不必要的复杂。

这有一定的作用。。我似乎找不到任何其他方法来击打NSLog。这是严格意义上的IOS5,但我可能不想进入和嵌套所有的风险投资。你必须有一个在旋转时在子视图中激发的示例方法吗?你只需编写自己的方法,然后在
WillAnimateRotationInterfaceOrientation
中自己调用它。很好的一点是,您在该方法内部进行的所有调用都将自动设置为适当的持续时间。