如何在Marmalade中处理UI旋转

时间:2012-03-16 04:22:24

标签: ios marmalade

我想知道如何处理UI旋转。当用户将UI从P​​otrait旋转到Landscape或反之亦然时,我需要更改我的UI布局。让我知道我需要处理哪个事件以及如何获得两种旋转的设备高度和宽度并调整我的UI。

我也感兴趣的是,如果我使用各种布局,那么它会在UI旋转时自动调整。典型的情况是假设我使用布局创建UI,在主屏幕上显示两个组件,左侧列表和列表特定项目的右侧内容(这与Windows上的资源管理器相同)。在这种情况下,如果我旋转我的UI,那么它将正确调整,或者我需要明确处理。

请尽快分享您的意见。

非常感谢您的支持。

此致 正常的Panchal

2 个答案:

答案 0 :(得分:0)

Marmalade自动处理PortraitLandscape,反之亦然,因此您无需对其进行编码。

答案 1 :(得分:0)

注册S3E_SURFACE_SCREENSIZE回调,然后您可以在屏幕尺寸/方向发生变化时收到通知:

s3eSurfaceRegister( S3E_SURFACE_SCREENSIZE, (s3eCallback)ScreenSizeOrientationChanged );


void ScreenSizeOrientationChanged( s3eSurfaceOrientation *orien, void *pUserData )
{
    s3eDebugTracePrintf( "Orientation Changed: width=%d, height=%d, surfacewidth=%d, surfaceheight=%d, blitdirection=%s", orien->m_Width, orien->m_Height, Iw2DGetSurfaceWidth(), Iw2DGetSurfaceHeight(), S3E_SURFACE_BLIT_DIR_ROT180 ? "180" : "0" );

    CGame *pGame = (CGame *)pUserData;
    if( pGame )
    {
        pGame->ReCalculateScreenSize( orien->m_Width, orien->m_Height );
    }
}

s3eSurfaceUnRegister( S3E_SURFACE_SCREENSIZE, (s3eCallback)ScreenSizeOrientationChanged );

您会注意到GetSurfaceWidth / Height方法仍会报告原始方向值,因此请使用s3eSurfaceOrientation结构中传递的值