说我正在创建一个计算器,我知道我将支持最多20个数字的纵向和40个数字的横向。
如何创建或调整标签大小以显示最大位数,以便在我们添加或删除结果中的数字时不会继续调整大小?
我到目前为止尝试过的代码;
result = find (idx2);
到目前为止没有运气,原始帧重置似乎没有调整标签大小,当我添加或删除数字时,框架(通过观看边框)也会调整大小。
我没有看到任何尺寸限制,我应该创建约束而不是通过改变框架来设置宽度吗?
还有其他提示吗?
感谢。
答案 0 :(得分:0)
尝试将此属性添加到标签: - resultDigitsLabel.adjustsFontSizeToFitWidth = true
答案 1 :(得分:0)
您必须计算20位数或40位数的帧,并为该帧创建UILabel的帧。
let digits:NSString = "99999999999999999999" as NSString
let idealFrame= digits.boundingRect(with: CGSize(width: CGFloat.infinity, height: 30), options: .usesLineFragmentOrigin, attributes: [NSFontAttributeName:labelFont], context: nil).size
现在你可以在这个框架上制作UILabel了。
答案 2 :(得分:0)
约束是最好的方法。为您的Label提供588f2aded1902a1b08959145
和Leading
约束,并为Trailing
提供超级视图。
它将支持横向和纵向模式。
答案 3 :(得分:0)
根据上面的warri0r9,添加约束就可以了;
let screenSize: CGRect = UIScreen.main.bounds;
let screenWidth = screenSize.width;
let constraintMargin = (screenWidth - labelSize.width) / 2;
let leadingConstraint = NSLayoutConstraint(item: targetDigitsLabel, attribute: .leading, relatedBy: .equal, toItem: view, attribute: .leading, multiplier: 1, constant: constraintMargin);
let trailingConstraint = NSLayoutConstraint(item: targetDigitsLabel, attribute: .trailing, relatedBy: .equal, toItem: view, attribute: .trailing, multiplier: 1, constant: constraintMargin * -1);
view.addConstraints([leadingConstraint, trailingConstraint]);