我有一个容器UIView
和UILabel
。容器视图大小已设置,然后我将文本添加到UILabel
,在标签上调用sizeToFit
,并将标签添加为容器视图的子视图。当实际中心关闭时,将UILabel对准其超级视图
然后我用下面的代码中心集装箱视图内侧的标签:
viewCountLabel.frame = CGRectMake(viewCountContainer.frame.size.width/2 - viewCountLabel.frame.size.width/2, viewCountContainer.frame.size.height/2 - viewCountLabel.frame.size.height/2, viewCountLabel.frame.size.width, viewCountLabel.frame.size.height);
这是非常标准的代码来居中的东西它是上海华/容器,它总是工作得很好。
但是,现在我有一个小问题。这个标签的文字是一个简单的数字。它可能是1,9,15,22等
我的问题是,当我集中一切,一些数字看中心,即使他们在技术上完全居中。
下面是一个例子PIC与边框容器和标签两个,所以你可以看到,他们都完全居中:
但这里是它的外观没有国界:
15
看起来不像它的居中,即使它在技术上是。它看起来有点偏离右边。如果我从x值中减去2或3,它会在视觉上看起来居中,但看到这就是问题所在。
如何设置逻辑以“视觉中心化”这样的标签的各种值?我觉得根据文本值设置一堆if
声明是过度杀伤性的,并且只是对该问题应用了一个bandaid。
我也试过使用NSTextAlignmentCenter
这并没有什么区别。我不确定我是否错误地使用NSTextAlignmentCenter
,或者如果sizeToFit
存在潜在问题。
您会注意到该标签的蓝色边框在所有边上都有额外的空间,但对于此问题最重要的是它在左侧和右侧都有额外的空间。我觉得这可能会导致这个问题,但我不知道如何解决这个问题,或者如果这是问题。
这里是我的代码:
// Setup view count label container
UIView *viewCountContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 95, 95)];
viewCountContainer.frame = CGRectMake(self.view.frame.size.width/2 - viewCountContainer.frame.size.width/2, 87, viewCountContainer.frame.size.width, viewCountContainer.frame.size.height);
// Setup + add number label to container
UILabel *viewCountLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.pushModal.frame.size.width, 95)];
viewCountLabel.textAlignment = NSTextAlignmentCenter;
viewCountLabel.font = [UIFont fontWithName:@"HelveticaNeue-Light" size:72];
viewCountLabel.textColor = [UIColor colorWithRed:0.278 green:0.278 blue:0.278 alpha:1];
viewCountLabel.text = [NSString stringWithFormat:@"%d", viewCount];
[viewCountLabel sizeToFit];
// Center the label to it's super view (viewCountContainer)
viewCountLabel.frame = CGRectMake(viewCountContainer.frame.size.width/2 - viewCountLabel.frame.size.width/2, viewCountContainer.frame.size.height/2 - viewCountLabel.frame.size.height/2, viewCountLabel.frame.size.width, viewCountLabel.frame.size.height);
[viewCountContainer addSubview:viewCountLabel];
[self.view addSubview:viewCountContainer];
这真的取决于字体。你可以改变它吗? – picciano