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或点。