1

我以编程方式创建了一个视图、一个 UIImageView 和一个按钮。问题是如果设备从纵向切换到横向,我需要更新它们的位置,我该怎么做?

这应该是检查设备是否处于纵向或横向模式的代码

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {


    }
    else
    {


    }
}
4

4 回答 4

1
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
    {
//change the frame for sideways direction
btn.frame=CGRectMake(x,y,width,height);
imgView.frame=CGRectMake(x,y,width,height);
view.frame=CGRectMake(x,y,width,height);
    }
else
    {
//change the frame for up/down
btn.frame=CGRectMake(x,y,width,height);
imgView.frame=CGRectMake(x,y,width,height);
view.frame=CGRectMake(x,y,width,height);
    }
 }
于 2014-07-16T15:36:03.540 回答
0

您应该使用代码[self setFrame:CGRectMake(x, y, width, height)]; 在这种情况下self将是您的名称UIImageView, View or Button

于 2014-07-16T15:01:07.193 回答
0

您在 viewWillLayoutSubviews 中执行此操作。通常,如果您需要做的只是相对于超级视图的边界进行帧更改,则不需要任何方向。

于 2015-02-20T22:28:46.920 回答
0

通常你应该在这种情况下使用 AutoLayout。你可以在这里阅读:http ://www.raywenderlich.com/50317/beginning-auto-layout-tutorial-in-ios-7-part-1

如果你想要一些特别的东西,你可以使用

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration

或者

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
于 2014-07-17T05:23:22.097 回答