将多个xib链接到一个控制器

时间:2012-11-08 21:36:56

标签: iphone ios xcode

我一直在寻找答案,但还没有。

我正在尝试解决一个问题,因为我有一个自动调整大小的视图。如果3GS等...它使用picture.png,如果iphone 4& 5它使用picture@2x.png。

然而,当调整大小时,iphone 4上的背景会延伸到底部边框下方,因此部分背景会被覆盖。

在iPhone 5上它完全适合,但按钮不调整,它们保持原位就像屏幕来自3G一样(如果iphone 4是模拟器也一样)。

如果你有解决上述问题的方法,我很满意,我对xcode很新,我只是想学习。

作为解决方法,我正在考虑检查屏幕大小,然后加载为该屏幕构建的xib,但是我的应用程序崩溃时使用以下代码:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil;

CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
CGFloat screenHeight = screenSize.height;

if (screenHeight == 568){
    nibNameOrNil = (NSString*)@"main5";
     self = [self initWithNibName:nibNameOrNil bundle:nil];
    if (self) {
        // Custom initialization
    }

}else{
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {
        // Custom initialization
}

}
return self;

先谢谢你

调试

self Mainscreencantroller * 0x00000000 nibNameOrNil NSString * 0x02a01196 NSObject NSObject
isa类0x656a626f [0]班级 nibBundleOrNil __NSArrayM * 0x0a55d3e0

1 个答案:

答案 0 :(得分:0)

在摆弄了一段时间之后,我决定通过控制Grect界限来接近。

以下是代码,

但是我仍然有兴趣知道你是否可以将多个xib加载到控制器中

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil

{

self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {

    CGRect screenBound = [[UIScreen mainScreen] bounds];
    CGSize screenSize = screenBound.size;
    CGFloat screenWidth = screenSize.width;
    CGFloat screenHeight = screenSize.height;
    NSLog(@"screenheight =%f", screenHeight);
    if(screenHeight == 568){

        screenBound.origin.y = -44;
        self.view.bounds = screenBound;

    }else if (screenHeight ==480){
        self.view.bounds = screenBound;
    }
        // Custom initialization
}

返回自我;