我一直在寻找答案,但还没有。
我正在尝试解决一个问题,因为我有一个自动调整大小的视图。如果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
答案 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
}
返回自我;