以编程方式更改帧位置

时间:2014-07-16 14:57:31

标签: xcode landscape-portrait programmatically-created

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

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

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


    }
    else
    {


    }
}

4 个答案:

答案 0 :(得分: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);
    }
 }

答案 1 :(得分:0)

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

的名称

答案 2 :(得分: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

答案 3 :(得分:0)

你在viewWillLayoutSubviews中做到了。 通常情况下,如果您需要做的就是对超视图的边界进行帧更改,则不需要任何方向。