0

このコードを使用して完全に中央に配置されたtableViewsを持つUITabbarControllerに2つのビューがあります

float origenX = [self locationTable].contentSize.width * .1;
float origenY = ([[self view] frame].size.height / 2) - ([self        locationTable].contentSize.height / 2);
float sizeW = [self locationTable].contentSize.width * .8;
float sizeH = [self locationTable].contentSize.height;
CGRect newFrame = CGRectMake(origenX, origenY, sizeW, sizeH);

[[self locationTable] setFrame:newFrame];

しかし、同じviewControllerの別のビューでは、ラベルがあり、同じようにスペースを空けようとしています

float labelW = [[UIScreen mainScreen] bounds].size.width * .8;
float labelH = [[UIScreen mainScreen] bounds].size.height * .6;
float x = ([[UIScreen mainScreen] bounds].size.width / 2) - (labelW / 2);
float y = ([[UIScreen mainScreen] bounds].size.height / 2) - (labelH / 2);

[[self infoLabel] setFrame:CGRectMake(x, y, labelW, labelH)];

ラベルのみが Y 軸の中央に正しく配置されていません。を使用してサイズを取得して中央揃えを試みました

[[UIScreen mainScree] bounds].height /  2
[[self view] superView] bounds].height / 2
[[self view] bounds].height / 2

何か案は?ラベルではなく tableView で簡単に中央に配置できるのはなぜですか? ありがとう

4

2 に答える 2

1

なぜあなたは利用しないのですか

CGRectInset
Returns a rectangle that is smaller or larger than the source rectangle, with the same center point.

例えば:

UIView *baseView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 100,100)];
[baseView setBackgroundColor:[UIColor blackColor]];
UIView *innerView = [[UIView alloc] initWithFrame:CGRectInset(baseView.bounds, 20, 20)];
[innerView setBackgroundColor:[UIColor grayColor]];
NSLog(@"%@",NSStringFromCGRect(baseView.bounds));
NSLog(@"%@",NSStringFromCGRect(baseView.frame));
NSLog(@"%@",NSStringFromCGRect(CGRectInset(baseView.bounds, 8, 8)));
[baseView addSubview:innerView];
[self.view addSubview:baseView];

UILabel は UIView から継承するため、-setCenter:メソッドのユーザーを作成して中心点を設定できます

于 2013-03-16T22:45:00.797 に答える