1

私はこれに対する答えを探していましたが、まだ何もありません。

ビューのサイズが自動的に変更されるという問題を回避しようとしています。3GSなどの場合はpicture.pngを使用し、iphone4および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 NSObjectNSObjectisa
クラス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 に答える