我以编程方式创建了一个View,一个UIImageView和一个Button。问题是如果设备从纵向切换到横向,我需要更新它们的位置,我该怎么办?
这应该是检查设备是处于纵向还是横向模式的代码
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight)
{
}
else
{
}
}
答案 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中做到了。 通常情况下,如果您需要做的就是对超视图的边界进行帧更改,则不需要任何方向。