我在init中加载了这样的笔尖:
self = [super initWithNibName:@"PageView_iPhone" bundle:nil];
但是,如果方向发生变化,我如何在运行时(即初始化后)更改此项? initWithNibName
无效。
答案 0 :(得分:3)
如果您真的想加载不同的笔尖,可以使用:
[[NSBundle mainBundle] loadNibNamed:@"PageView_iPhone" owner:self options:nil];
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"PageView_iPhone"
owner:self
options:nil];
PageView_iPhone* myView = [nibViews objectAtIndex:0];
答案 1 :(得分:1)
在初始化期间,我设置我的视图(以编程方式创建它们)并为中心位置创建额外的CGPoint,或者为视图控制器中的每个视图创建帧的CGRect。
在init中创建视图后,我调用名为layoutViewsForOrientation的方法来设置初始位置,并传入当前状态栏方向。当方向改变时,我使用以下代码:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
BOOL result = NO;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
result = (interfaceOrientation != UIInterfaceOrientationPortraitUpsideDown);
} else {
result = YES;
}
if( result == YES ) [self layoutViewsForOrientation:interfaceOrientation];
return result;
}
可能有一种更简单的方法,但这很适合我的需要。