方向更改时以编程方式更改笔尖

问题描述 投票:0回答:2

我在init中加载我的这样的笔尖:

self = [super initWithNibName:@"PageView_iPhone" bundle:nil];

但是,如果方向发生变化,如何在运行时(即初始化后)更改此值? initWithNibName不会工作。

iphone ios cocoa-touch uiview nib
2个回答
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
投票

在初始化期间,我设置我的视图(以编程方式创建它们)并为中心位置创建额外的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;
}

可能有一种更简单的方法,但这对我的需求很有效。

© www.soinside.com 2019 - 2024. All rights reserved.