两个具有不同字体大小的自动布局 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 以正确计算内在内容大小

根据自动布局更改 UILabel 中的字体大小(swift)

自动布局 - UILabel 在方向更改后宽度缩小,这是由另一个应该自动调整字体大小的 UILabel 引起的

如何在 iOS 中根据 dp(不是点数)设置 UILabel 字体大小,就像只有自动布局的 android

具有不同字体大小和颜色的UILabel文本[重复]

无法在具有动态宽度的 Tablecell 中并排自动布局两个 UILabel