改变iPad的方向时Xcode 4.5的问题

时间:2012-09-25 11:49:56

标签: iphone objective-c ios xcode ipad

自从我升级到XCODE 4.5后,我就遇到了这个问题。

我有各种UI元素

UIButton *button1; UIButton *button2; UIButton *button3;

- (void)viewDidLoad
 {
    button1 =[[UIButton alloc]init ];
    button1.backgroundColor=[UIColor yellowColor];
[self.view addSubview:button1];


button2 =[[UIButton alloc]init ];
button2.backgroundColor=[UIColor yellowColor];
[self.view  addSubview:button2];


button3 =[[UIButton alloc]init ];
button3.backgroundColor=[UIColor yellowColor];
[self.view  addSubview:button3];
}

其框架在

中声明
 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {  
 if(interfaceOrientation==UIInterfaceOrientationPortrait ||[interfaceOrientation==UIInterfaceOrientationPortraitUpsideDown )
 {


 button1.frame=CGRectMake(10,10,10,10);
 button2.frame=CGRectMake(10,30,10,10);

 button3.frame=CGRectMake(10,50,10,10);
 }
      if(interfaceOrientation ==UIInterfaceOrientationLandscapeLeft ||interfaceOrientation==UIInterfaceOrientationLandscapeRight)
{
 button1.frame=CGRectMake(20,10,10,10);
 button2.frame=CGRectMake(20,30,10,10);

 button3.frame=CGRectMake(20,50,10,10);
  }

 return YES;

}

但是Xcode 4.5中没有设置帧。 在之前的版本中它运行良好。

我需要在我的应用中严重自动调整大小。所以帮助我。

2 个答案:

答案 0 :(得分:4)

您应该在viewController中实现新方法(在'ios 6'中引入)以获取方向

- (BOOL)shouldAutorotate
{

    return TRUE;

}

- (NSUInteger)supportedInterfaceOrientations
{
     return UIInterfaceOrientationMaskAll;


}

并修改您的代码将您的代码放在下方法

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)  interfaceOrientation duration:(NSTimeInterval)duration
{

 }  

同时检查你的窗口,你需要在rootviewController上添加控制器而不是像下面的addSubview

self.window.rootViewController =的viewController;

答案 1 :(得分:1)

当设备方向发生变化时,某些类会自动调整大小,例如从纵向到横向,但其他(如UILabel和UITextView)需要一些配置。

setAutoresizesSubviews 属性控制每个对象在边界更改时是否会自动调整大小。

setAutoresizingMask 属性控制每个对象自动调整大小的方式。 UILabel只需要担心调整其宽度,但由于UITextView是可滚动的,因此当它的边界发生变化时需要调整其宽度和高度。

您还应确保将 shouldAutorotateToInterfaceOrientation 方法配置为返回 YES ;否则,当设备方向改变时,您的视图将不会执行任何操作!

示例代码:

[self.myLabel setAutoresizesSubviews:YES];
[self.myLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

[self.myTextView setAutoresizesSubviews:YES];
[self.myTextView setAutoresizingMask:UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight];

有关详细信息,请访问 here