1

我一直在寻找这个问题的答案,但还没有。

如果我有一个自动调整大小的视图,我正在尝试解决一个问题。如果是 3GS 等...它使用图片.png,如果 iphone 4 和 5 它使用图片@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

4

1 回答 1

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
}

回归自我;

于 2012-11-08T22:35:38.803 回答