0

私は使っている:

 if (UIInterfaceOrientationLandscapeLeft | UIInterfaceOrientationLandscapeRight)
{
    viewofimage.frame = CGRectMake(130, 45, 220, 115);
    share.frame = CGRectMake(205, 161, 70, 70);
    invite.frame = CGRectMake(8, 161, 70, 70);
    contact.frame = CGRectMake(402, 161, 70, 70);
    invitation.frame = CGRectMake(3, 227, 81, 21);
    sharing.frame = CGRectMake(200, 227, 81, 21);
    contacting.frame = CGRectMake(397, 227, 81, 21);
}
else
{
    viewofimage.frame = CGRectMake(20, 64, 280, 206);
    invite.frame = CGRectMake(8, 285, 70, 70);
    share.frame = CGRectMake(125, 285, 70, 70);
    contact.frame = CGRectMake(242, 285, 70, 70);
    invitation.frame = CGRectMake(3, 358, 81, 21);
    sharing.frame = CGRectMake(120, 358, 81, 21);
    contacting.frame = CGRectMake(237, 358, 81, 21);
}

回転時に特定の場所にボタンとラベルを設定します。唯一の問題は、そのView Controllerを離れて、同じコードを配置した別のコントローラーに移動すると、ボタンとラベルが定義されたCGRECTMAKE値に移動しないことです。選択したビューコントローラーが回転したときにのみ移動します。他のView Controllerにどの方向にあるかを検出させ、それらに到達したときに適切にサイズ変更するにはどうすればよいですか?

4

2 に答える 2

0

このメソッドを使用して、UIView の autoMaskSubView を false に設定します。

 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation{

if (interfaceOrientation = UIInterfaceOrientationLandscapeLeft || interfaceOrientation = UIInterfaceOrientationLandscapeRight)
{
viewofimage.frame = CGRectMake(130, 45, 220, 115);
share.frame = CGRectMake(205, 161, 70, 70);
invite.frame = CGRectMake(8, 161, 70, 70);
contact.frame = CGRectMake(402, 161, 70, 70);
invitation.frame = CGRectMake(3, 227, 81, 21);
sharing.frame = CGRectMake(200, 227, 81, 21);
contacting.frame = CGRectMake(397, 227, 81, 21);
}
else
{
viewofimage.frame = CGRectMake(20, 64, 280, 206);
invite.frame = CGRectMake(8, 285, 70, 70);
share.frame = CGRectMake(125, 285, 70, 70);
contact.frame = CGRectMake(242, 285, 70, 70);
invitation.frame = CGRectMake(3, 358, 81, 21);
sharing.frame = CGRectMake(120, 358, 81, 21);
contacting.frame = CGRectMake(237, 358, 81, 21);
}

return YES; 
}
于 2012-06-12T15:42:48.420 に答える
0

View Controller では、回転を検出するたびにこのメソッドが呼び出されます。私はあなたが現在このコードを持っている場所だと思います

-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
        viewofimage.frame = CGRectMake(130, 45, 220, 115);
        share.frame = CGRectMake(205, 161, 70, 70);
        invite.frame = CGRectMake(8, 161, 70, 70);
        contact.frame = CGRectMake(402, 161, 70, 70);
        invitation.frame = CGRectMake(3, 227, 81, 21);
        sharing.frame = CGRectMake(200, 227, 81, 21);
        contacting.frame = CGRectMake(397, 227, 81, 21);
    }
    else
    {
        viewofimage.frame = CGRectMake(20, 64, 280, 206);
        invite.frame = CGRectMake(8, 285, 70, 70);
        share.frame = CGRectMake(125, 285, 70, 70);
        contact.frame = CGRectMake(242, 285, 70, 70);
        invitation.frame = CGRectMake(3, 358, 81, 21);
        sharing.frame = CGRectMake(120, 358, 81, 21);
        contacting.frame = CGRectMake(237, 358, 81, 21);
    }
}

-=-=-=-=-=-=-=-=-

別のviewControllerに移動するときに向きを検出し、それに応じてオブジェクトを配置したい場合...次に、次のように自分の向きを検出できます。

-(void)viewWillAppear:(BOOL)animated
{
    UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
    if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
    {
        viewofimage.frame = CGRectMake(130, 45, 220, 115);
        share.frame = CGRectMake(205, 161, 70, 70);
        invite.frame = CGRectMake(8, 161, 70, 70);
        contact.frame = CGRectMake(402, 161, 70, 70);
        invitation.frame = CGRectMake(3, 227, 81, 21);
        sharing.frame = CGRectMake(200, 227, 81, 21);
        contacting.frame = CGRectMake(397, 227, 81, 21);
    }
    else
    {
        viewofimage.frame = CGRectMake(20, 64, 280, 206);
        invite.frame = CGRectMake(8, 285, 70, 70);
        share.frame = CGRectMake(125, 285, 70, 70);
        contact.frame = CGRectMake(242, 285, 70, 70);
        invitation.frame = CGRectMake(3, 358, 81, 21);
        sharing.frame = CGRectMake(120, 358, 81, 21);
        contacting.frame = CGRectMake(237, 358, 81, 21);
    }
}

-=-=-=-=-=-=-=-=-

さらに参照するには:

プログラムでiPhoneインターフェイスの向きを決定する方法は?

于 2012-06-12T15:40:00.310 に答える