设置自定义字体时文本alignment问题

当我为分段控件设置自定义字体时,它将更改垂直文本alignment方式。 我正在使用下面的代码来设置字体。

// I dont think these lines are creating any issue but just wanted to paste all the code self.segmentType.layer.borderColor = navigationTintColor.CGColor; self.segmentType.layer.cornerRadius = 0.0; self.segmentType.layer.borderWidth = 1.5; // These are the lines that are changing the text alignment UIFont *font = [UIFont fontWithName:ftHelveticaNeueLTPro_Th size:13.5]; NSDictionary *attributes = [NSDictionary dictionaryWithObject:font forKey:UITextAttributeFont]; [self.segmentType setTitleTextAttributes:attributes forState:UIControlStateNormal]; 

以下是最新dynamic的截图。 如果你是观察者,文本不是垂直居中alignment的。

在这里输入图像说明

请帮帮我 。 先谢谢你 !!

@Emmanuelbuild议的下面的代码工作得很好。 您可以更改垂直偏移量以垂直居中alignment文本。

  [self.segmentType setContentPositionAdjustment:UIOffsetMake(0, 2) forSegmentType:UISegmentedControlSegmentAny barMetrics:UIBarMetricsDefault]; 

你可以请尝试使用自定义UILabel上的自定义视图。 根据实际视图的方便性,更改和修改titleLabel或customSegmentView的帧值。 把这个全视图作为你的分段控件的子视图。

 UIView *customSegmentView = [[UIView alloc] init]; UILabel *segmentTitleLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 7.0f,180.0f,22.6f)]; segmentTitleLabel.text = @"your-text"; segmentTitleLabel.backgroundColor = [UIColor clearColor]; segmentTitleLabel.textAlignment = UITextAlignmentCenter; segmentTitleLabel.font = [UIFont fontWithName:@"ftHelveticaNeueLTPro_Th" size:13.5f]; customSegmentView.frame = CGRectMake(60, 20, 180, 35); [customSegmentView addSubview:segmentTitleLabel]; [self.segmentType setTitleView:customSegmentView]; 

希望能为你的问题工作。 请检查并告诉我们是否需要使用另一种解决scheme。

在XCode 6上的InterfaceBuilder中,有一个Content Offset控件用于分段,这会影响文本的基线。 我有这个问题,因为我的内容偏移在Y维而不是0。