设置自定义字体时出现文本对齐问题

时间:2014-02-24 06:29:08

标签: ios objective-c uikit uisegmentedcontrol text-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];

以下是最新动态的屏幕截图。如果您是观察者,则文本不是垂直居中对齐的。

enter image description here

请帮帮我。提前谢谢!!

3 个答案:

答案 0 :(得分:12)

@Emmanuel建议的以下代码完美无缺。您可以更改垂直偏移以在中心垂直对齐文本。

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

答案 1 :(得分:0)

您能否在自定义视图上使用自定义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];

希望这对你的问题有用。如果我们必须采用其他解决方案,请检查并告知我们。

答案 2 :(得分:0)

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