如何将根视图控制器默认为 1024x768 大小的横向
Posted
技术标签:
【中文标题】如何将根视图控制器默认为 1024x768 大小的横向【英文标题】:How to default the root view controller to landscape with a size of 1024x768 【发布时间】:2012-05-02 12:14:01 【问题描述】:我正在开发一个需要限制为横向模式的 iPad 应用。我有一个根视图控制器
和一个子视图控制器。我将子视图控制器添加到根视图控制器并设置它们
帧到 1024x768。我在 info.plist 和我的视图控制器中将应用程序限制为横向模式
shouldAutorotateToInterfaceOrientation:interfaceOrientation
方法。然而,尺寸为
子视图在 viewDidAppear
方法出现之前的某个时间重置为 768x1024
就好像它处于纵向模式一样。
strange 部分是如果我为子视图设置框架,以便宽度或高度是某种东西 除了屏幕尺寸,例如:CGRectMake(0, 0, 1024, 767) 或 CGRectMake(0, 0, 1024, 769),它不会被重置并且 以横向模式显示。
所以我的问题是,是什么导致了这种行为。什么是简单地默认所有视图的最佳方法 横向模式
这是我的根视图控制器:
// INTERFACE
#import <UIKit/UIKit.h>
#import "ScrapViewController.h"
@interface ViewController : UIViewController
ScrapViewController *svc;
@end
// IMPLEMENTATION
@implementation ViewController
- (void)viewDidLoad
[super viewDidLoad];
self.view.backgroundColor = [UIColor blueColor];
self.view.frame = CGRectMake(0, 0, 1024, 768);
svc = [[SubViewController alloc] init];
svc.view.backgroundColor = [UIColor redColor];
svc.view.frame = CGRectMake(0, 0, 1024, 768);
[self.view addSubview:svc.view];
NSLog(@"viewDidLoad rvc %f,%f", self.view.frame.size.width, self.view.frame.size.height);
NSLog(@"viewDidLoad svc %f,%f", svc.view.frame.size.width, svc.view.frame.size.height);
- (void)viewDidUnload
[super viewDidUnload];
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
@end
这是我的子视图控制器
// INTERFACE
#import <UIKit/UIKit.h>
@interface SubViewController : UIViewController
@end
// IMPLEMENTATION
@implementation SubViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self)
// Custom initialization
return self;
- (void)viewDidLoad
[super viewDidLoad];
- (void)viewDidUnload
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
return interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight;
@end
【问题讨论】:
只是提交一个错误。这应该是一个。 【参考方案1】:如果您使用 xib 文件,则只需将您的子视图的 xib 默认设置为横向,即 nib 文件的默认设计将是横向,即在属性窗口中使您的子视图的视图横向
【讨论】:
嗨阿洛克。在我寻求景观子视图的过程中,我还尝试创建一个 .xib 以对应于将其设置为景观的子视图控制器。我用initWIthNibName:bundle
实例化了它,它达到了同样的效果。当它设置为 1024x768 时,宽度/高度被交换,但是当它是 1024x769 时它可以工作。我通过在子视图控制器的viewDidAppear
方法中重置框架来让它工作,但这似乎应该是不必要的。我受阻了。以上是关于如何将根视图控制器默认为 1024x768 大小的横向的主要内容,如果未能解决你的问题,请参考以下文章