以前只使用过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;
答案 0 :(得分:1)
这是预期的行为。没有什么需要调整大小。使用屏幕边界初始化主视图。因此,无论是在iPhone还是iPad上,它都会直接获得设备的屏幕尺寸,并且在旋转或以编程方式更改主视图的框架之前不会调整大小。 iOS无法理解你希望你的textureBg
在iPhone上是320分,如果它在iPad上则可以扩展。
您需要计算需要适应屏幕大小的视图框架。
你应该避免使用320等固定大小,而更喜欢self.view.bounds.size.width
之类的东西。在您需要适应iPad的情况下,它将为您节省时间。