如何修复UINavigationBar中的UILabel对齐方式

时间:2011-12-06 17:15:59

标签: iphone ios

我在我的UILabel栏中添加了一个自定义UINavigation,如下所示:

UILabel *navTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 200, 44)];
navTitle.backgroundColor = [UIColor clearColor];
navTitle.text = @"TEST";
navTitle.font = [UIFont fontWithName:@"GothamNarrowBook-Regular" size:28];
navTitle.textColor = [UIColor whiteColor];
navTitle.textAlignment = UITextAlignmentCenter;
self.navigationItem.titleView = navTitle;

但是当它出现在模拟器上时,它对齐得太高了:

enter image description here

调整框架我没有运气。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

您可以将标签放在另一个视图中,然后将另一个视图作为titleView插入。这将允许某种灵活性。

您也可以尝试调整框架的位置:

UILabel *navTitle = [[UILabel alloc] initWithFrame:CGRectMake(0, >>>10<<<, 200, 44)];

但请记住,NavigationBar在横向模式下具有不同的高度,因此您必须相应地使用autoresizingMask。

答案 1 :(得分:0)

你能设置self.nagivationItem.titleView的框架并将其推下来吗?

CGRect initialFrame = self.navigationItem.titleView;
self.navigationItem.titleView = CGRectMake(initialFrame.origin.x, initialFrame.origin.y+10, initialFrame.size.width, initialFrame.size.height);

要检查的另一件事,确保你的UINavigationBar实际上是44px高,如果你的UILabel高度相同,那么我认为默认行为是垂直居中,这将使它落在正确的位置。

答案 2 :(得分:0)

我认为增加UILAbel的高度不起作用。 或Y位置。 我认为你在创建框架后尝试调整框架,例如除了在initWithFrame中。

也许尝试使用图片代替?嗯,这是一个想法;)