Ios UIX如何标记';s最小规模因子工作?

Ios UIX如何标记';s最小规模因子工作?,ios,objective-c,uilabel,Ios,Objective C,Uilabel,我以前使用过minimumFontSize,但该函数现在已被弃用,我不太了解minimumScaleFactor的工作原理 我希望最大字体大小为10,最小字体大小为7 如何使用比例因子将大小重新调整为7号字体 ui标签创建: UILabel *label = [[UILabel alloc] init]; [label setTranslatesAutoresizingMaskIntoConstraints:NO]; label.text = [labelName uppercaseStrin

我以前使用过
minimumFontSize
,但该函数现在已被弃用,我不太了解
minimumScaleFactor
的工作原理

我希望最大字体大小为10,最小字体大小为7

如何使用比例因子将大小重新调整为7号字体

ui标签
创建:

UILabel *label = [[UILabel alloc] init];
[label setTranslatesAutoresizingMaskIntoConstraints:NO];
label.text =  [labelName uppercaseString];
label.textAlignment = NSTextAlignmentCenter;
label.textColor = [UIColor whiteColor];
label.font = [UIFont fontWithName:HELVETICA_FONT_STYLE_BOLD size:9.5];
label.backgroundColor = [UIColor clearColor];
label.minimumScaleFactor = .1f;

[label addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[label(WIDTH)]"
                                                              options:0
                                                              metrics:@{@"WIDTH" : [NSNumber numberWithFloat:buttonSize.width]}
                                                                views:NSDictionaryOfVariableBindings(label)]];

[contentView addSubview:label];
根据报告:

使用此属性可指定当前字体大小的最小倍增,该倍增可产生可接受的字体大小,以便在显示标签文本时使用。如果为此属性指定值0,则当前字体大小将用作最小字体大小


因此,如果标签的默认字体大小为
10
,则将
0.7f
作为
minimumScaleFactor
,它应该执行与
minimumFontSize
相同的操作。

您需要设置
标签。adjustsFontSizeToFitWidth=YES

除了其他答案所说的之外,如果您将minSize/defaultSize(除法)作为
minimumScaleFactor
,它将与使用旧的
minimumFontSize
相同

例如,如果希望使用默认标签大小将最小字体大小设置为10,则可以执行以下操作:

[label-setMinimumScaleFactor:10.0/[UIFont-labelFontSize]

(如果标签的字体大小不是默认值,则将其替换为标签的字体大小)

这与:
[label setMinimumFontSize:10.0]

除了其他答案外,我还将添加一个对初学者友好的解释,帮助我自己:

如何计算
最小比例因子
?将标签的最小字体大小除以标签的默认字体大小。例如,默认字体大小为25。您的最小字体大小是10

10/25=0.4


0.4是您的
minimumScaleFactor
值。另请参见上文@Jsdodgers的答案

我也是这么想的;但即使我将其设置为0.1f,文本也不会调整大小。我将添加uilabel代码。如果您删除约束并只收缩标签的框架会怎么样?Log139:您的numberOfLines设置为多少?苹果的文档称,minimumScaleFactor只有在numberOfLines设置为1时才有效。使用0或大于1的任何值都不起作用。@SeanK即使numberOfLines设置为大于1但不是0,它也会起作用。很好,这就是我自己的代码中缺少的内容。谢谢:DNote:“苹果的文档说,minimumScaleFactor只有在numberOfLines设置为1时才起作用。使用0或任何大于1的东西都不起作用。”。谢谢肖克,太棒了!有趣的是,如果在XIB中设置minumumScaleFactor,则不需要设置adjustsFontSizeToFitWidth,但在代码中执行此操作时需要设置。该除法应强制转换为CGFloat,否则就不需要work@dwery执行10/labelSize可能会得到一个截断的整数值0,但是10.0或10.f工作正常,没有显式强制转换。你是对的,它应该会起作用。我不记得在哪个代码中它对我不起作用,可能是缺少了f或点。