两个具有不同字体大小的自动布局 UILabel:文本顶部对齐
Posted
技术标签:
【中文标题】两个具有不同字体大小的自动布局 UILabel:文本顶部对齐【英文标题】:Two auto layouted UILabels with different font sizes: Text Top alignment 【发布时间】:2016-08-10 02:20:52 【问题描述】:有没有办法设置两个 UILabel 文本顶部对齐?两者都是不同的字体大小。
【问题讨论】:
你可以为此使用堆栈视图并对齐顶部。 我的目标是 ios 8。所以我不能使用 stackView 【参考方案1】:我可以给你看一张这张图片的例子:
代码:
- (NSMutableAttributedString *)styleSalePriceLabel:(NSString *)salePrice withFont:(UIFont *)font
if ([salePrice rangeOfString:@"."].location == NSNotFound)
return [[NSMutableAttributedString alloc] initWithString:salePrice];
else
NSRange range = [salePrice rangeOfString:@"."];
range.length = (salePrice.length - range.location);
NSMutableAttributedString *stylizedPriceLabel = [[NSMutableAttributedString alloc] initWithString:salePrice];
UIFont *smallFont = [UIFont fontWithName:font.fontName size:(font.pointSize / 2)];
NSNumber *offsetAmount = @(font.capHeight - smallFont.capHeight);
[stylizedPriceLabel addAttribute:NSFontAttributeName value:smallFont range:range];
[stylizedPriceLabel addAttribute:NSBaselineOffsetAttributeName value:offsetAmount range:range];
return stylizedPriceLabel;
【讨论】:
这是您应该使用的解决方案,因为它使用一个标签,并且更新样式更容易,而无需每次都重新调整任何布局代码。【参考方案2】:终于....我明白了
//VerticalSpace from SmallFont Label to largeFont Label
@IBOutlet weak var dollarLabelTopSpacetoAmountLabel: NSLayoutConstraint!
@IBAction func btnClicked()
let amountString = self.amountLbl.text! as NSString
let fontSize = self.amountLbl.frame.size.width / CGFloat(amountString.length)
let difference = self.amountLbl.frame.size.height-fontSize
print(fontSize)
//Your minimum font size(30).
if fontSize>30
self.dollarLabelTopSpacetoAmountLabel.constant = -(difference-
else
// dollarLabelTopSpacetoAmountLabel.constant = -30
【讨论】:
以上是关于两个具有不同字体大小的自动布局 UILabel:文本顶部对齐的主要内容,如果未能解决你的问题,请参考以下文章
根据自动布局更改 UILabel 中的字体大小(swift)
自动布局 - UILabel 在方向更改后宽度缩小,这是由另一个应该自动调整字体大小的 UILabel 引起的