自从我升级到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中没有设置帧。 在之前的版本中它运行良好。
我需要在我的应用中严重自动调整大小。所以帮助我。
答案 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