旋转主屏幕并旋转回子视图

时间:2010-07-04 11:45:10

标签: iphone ipad opengl-es core-animation

如何旋转基本视图并仍然确保其子视图仍在正确的位置?

--------                            
|X     |   After 90 degree rotate and stretch
|      |   this should remain the same
|      |
|     Y|
--------

我认为我需要旋转90度并根据窗口比例拉伸并在子视图上执行相反的操作?

以下不起作用......

- (void) performTransformation:(UIView*)view isBase:(BOOL)isBase
{
    if(isBase) {
        [view.layer setAffineTransform:CGAffineTransformConcat(
            CGAffineTransformMakeRotation(M_PI * 0.5),
            CGAffineTransformMakeScale(-(3.0/4.0), (4.0/3.0)))];
    } else {
        [view.layer setAffineTransform:CGAffineTransformConcat(
            CGAffineTransformMakeScale(-(4.0/3.0), (3.0/4.0)),
            CGAffineTransformMakeRotation(-M_PI * 0.5))];
}

1 个答案:

答案 0 :(得分:0)

您是否根据设备的方向变化进行旋转?如果是这样,您只需使用UIViewController-shouldAutorotateToInterfaceOrientation:方法旋转视图。

要执行您所描述的内容,您可以设置单独的UIView s'autoresizingMask属性。在您的示例中,您将执行以下操作:

[viewX setAutoresizingMask:(UIViewFlexibleRightMargin |
                            UIViewFlexibleBottomMargin )];

[viewY setAutoresizingMask:(UIViewFlexibleTopMargin |
                            UIViewFlexibleLeftMargin )];

该代码会将第一个视图(我称之为viewX)设置为左上角,第二个视图设置为右下角。