【发布时间】:2017-07-11 14:20:11
【问题描述】:
我有一个带有 3 个段的 UISegmentedControl。英语字符串非常适合,但西班牙语字符串稍长一些,不适合。
为字符串动态操作字体大小以适应段大小的正确过程是什么?有没有类似于UILabel 的minimumFontScale 属性的东西?
【问题讨论】:
标签: ios objective-c localization uisegmentedcontrol
我有一个带有 3 个段的 UISegmentedControl。英语字符串非常适合,但西班牙语字符串稍长一些,不适合。
为字符串动态操作字体大小以适应段大小的正确过程是什么?有没有类似于UILabel 的minimumFontScale 属性的东西?
【问题讨论】:
标签: ios objective-c localization uisegmentedcontrol
试试这个 您不需要设置任何最小字体大小。如果需要,它将自动更改字体大小以显示标题。
NSArray *itemArray = [NSArray arrayWithObjects: @"Title1 testing font size", @"Title2", @"Titl3",nil];
UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:itemArray];
segmentedControl.frame = YOUR_FRAME;
[segmentedControl addTarget:self action:@selector(segmentControlClicked:) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:segmentedControl];
for (id segment in [segmentedControl subviews])
{
for (id label in [segment subviews])
{
if ([label isKindOfClass:[UILabel class]])
[label setAdjustsFontSizeToFitWidth:YES];
}
}
【讨论】:
试试这个
[_segmentedControl.subviews enumerateObjectsUsingBlock:^(UIView * obj, NSUInteger idx, BOOL *stop) {
[obj.subviews enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
if ([obj isKindOfClass:[UILabel class]]) {
UILabel *lblCaption = (UILabel *)obj;
lblCaption.minimumFontSize=10.0f;
//OR
lblCaption.minimumFontSize = 0.5f;
}
}];
}];
【讨论】: