当我为分段控件设置自定义字体时,它会更改垂直文本对齐方式。我使用下面的代码来设置字体。
// 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];
以下是最新动态的屏幕截图。如果您是观察者,则文本不是垂直居中对齐的。
请帮帮我。提前谢谢!!
答案 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.