0

以前は IB ビルダーしか実際に使用していなかったので、ビュー内のオブジェクトのサイズを変更する際に問題が発生しました。

コードに組み込まれたホーム画面があり(私の選択ではありません)、iPad用にサイズを変更しています。問題は、サイズ変更に関して何も起こっていないようです。

 - (void)loadView
{
// Create the main view
UIView *mainView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
mainView.backgroundColor = [UIColor blackColor];



// Add textured background
UIImageView *textureBg = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320.0f, 580.0f)];
textureBg.image = [UIImage imageNamed:@"BgTexture"];
[mainView addSubview:textureBg];

//////////////////////////////////Code addded resize view/////////////////////////////////////////
[textureBg setAutoresizingMask:(UIViewAutoresizingFlexibleHeight| UIViewAutoresizingFlexibleWidth)];





// Add clipboard background
UIImageView *clipBg = [[UIImageView alloc] initWithFrame:CGRectMake(7.0f, 6.0f, 305.0f, 465.0f )];
clipBg.image = [UIImage imageNamed:@"BgHomeNew2"];
clipBg.userInteractionEnabled = YES;

////////////////////////////////////Code addded resize view/////////////////////////////////////////
[clipBg setAutoresizingMask:(UIViewAutoresizingFlexibleBottomMargin| UIViewAutoresizingFlexibleWidth)];




// Add about button to clipbg
UIButton *aboutButton = [UIButton buttonWithType:UIButtonTypeCustom];
aboutButton.frame = CGRectMake(240.0f, 90.0f, 31.0f, 33.0f);
[aboutButton setImage:[UIImage imageNamed:@"LabelButton"] forState:UIControlStateNormal];
[aboutButton addTarget:self action:@selector(aboutButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[clipBg addSubview:aboutButton];

   // Create array of arrays to hold button image names and their targets
NSMutableArray *buttonsArray = [[NSMutableArray alloc] initWithObjects:
                                    [NSArray arrayWithObjects:
                                         @"BtnNewCert", @"newCertButtonPressed:", nil],
                                    [NSArray arrayWithObjects:
                                         @"BtnContractorDetails", @"contractorDetailsButtonPressed:", nil],
                                    [NSArray arrayWithObjects:
                                         @"BtnSavedCerts", @"savedCertsButtonPressed:", nil],
                                    nil];

// Iterate over the array and create the buttons
CGPoint buttonOrigin = CGPointMake(16.0f, 157.0f);
for (NSArray *buttonArray in buttonsArray) {
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(buttonOrigin.x, buttonOrigin.y, 273.0f, 88.0f);
    [button setBackgroundImage:[UIImage imageNamed:[buttonArray objectAtIndex:0]] forState:UIControlStateNormal];
    [button addTarget:self action:NSSelectorFromString([buttonArray objectAtIndex:1]) forControlEvents:UIControlEventTouchUpInside];
    //[button addTarget:self action:@selector(playButtonSound) forControlEvents:UIControlEventTouchUpInside];
    buttonOrigin.y += 98.0f;
    [clipBg addSubview:button];
}

[mainView addSubview:clipBg];

// Add more apps button
DebugLog(@"Adding more apps button");
UIButton *moreAppsButton = [UIButton buttonWithType:UIButtonTypeCustom];
moreAppsButton.frame = CGRectMake(25.0f, 12.0f, 75.0f, 24.0f);
[moreAppsButton addTarget:self action:@selector(moreAppsButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
[moreAppsButton setImage:[UIImage imageNamed:@"BtnMoreApps"] forState:UIControlStateNormal];
[mainView addSubview:moreAppsButton];




// Add cabinet for iPhone5
UIImageView *cabinet = [[UIImageView alloc] initWithFrame:CGRectMake(-2.0f, 445.0f, 324.0f, 128.0f )];
cabinet.image = [UIImage imageNamed:@"Cabinet2"];
[mainView addSubview:cabinet];
[mainView bringSubviewToFront:cabinet];







self.view = mainView;
4

1 に答える 1

1

これは予想される動作です。サイズを変更する必要はありません。画面境界を使用してメインビューを初期化します。そのため、iPhoneでもiPadでも、デバイスの画面サイズが直接取得され、回転するか、プログラムでメインビューのフレームを変更するまでサイズが変更されません。iOSがiPhoneで320ポイントになりたいことを理解textureBgし、iPadの場合は延長する方法はありません。
画面サイズに合わせる必要があるビューのフレームを計算する必要があります。また、320などの固定サイズの使用は避け、。などのようなものを優先する必要がありますself.view.bounds.size.width。それはあなたがiPadに適応する必要があるあなたの状況であなたの時間を節約するでしょう。

于 2012-09-30T23:05:33.743 に答える