0

我在 UITabbarController 中有两个视图,其中 tableViews 使用此代码完美居中

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 回答
0

谢谢大家,经过大量的试验和错误,我无法让它以编程方式对齐。我必须把它放在IB中。表格是动态调整大小的,因此这很重要,但标签始终是相同大小的,因此不需要移动。

于 2013-03-17T15:01:47.063 回答