我在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而不是标签来居中?感谢
答案 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中。这些表是动态调整的,因此这是至关重要的,但标签总是相同的大小,所以它不需要移动。