在UITableViewController中居中对象

时间:2013-03-16 22:10:55

标签: objective-c uitabbarcontroller uilabel center

我在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而不是标签来居中?感谢

2 个答案:

答案 0 :(得分: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:方法的用户设置中心点

答案 1 :(得分:0)

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