ios - 如何根据自动缩小的标签为多个标签设置相同的字体比例?

标签 ios ios7 ios8

我有 4 个标签 View ,其中一个应该显示较大的数值并设置为自动收缩。

我的要求是在自动调整以适合其内容后,将该标签设置为与其他标签相同的字体缩放或大小,以便文本内容在整个过程中看起来统一。

设置最小比例因子对其他标签没有帮助,因为它们的内容在帧限制内。

最佳答案

无法直接执行此操作,因为查询文本已缩小以适合的标签的字体,仍然显示原始字体大小。您必须通过迭代越来越小的字体大小来完成此操作,直到找到适合标签的大小,然后使用该字体大小来调整其他标签。在我下面的示例中,labelLong 是文本可以收缩的标签,labelShort 是文本不需要收缩的标签。

-(void)updateFont {
    NSStringDrawingContext *ctx = [NSStringDrawingContext new];
    ctx.minimumScaleFactor = 1.0;
    UIFont *startingFont = self.labelLong.font;
    NSString *fontName = startingFont.fontName;
    CGFloat startingSize = startingFont.pointSize;
    for (float i=startingSize*10; i>1; i--) { // multiply by 10 so we can adjust font by tenths of a point with each iteration
        UIFont *font = [UIFont fontWithName:fontName size:i/10];
        CGRect textRect = [self.labelLong.text boundingRectWithSize:self.labelLong.frame.size options:NSStringDrawingTruncatesLastVisibleLine attributes:@{NSFontAttributeName:font} context:ctx];
        if (textRect.size.width <= [self.labelLong textRectForBounds:self.labelLong.bounds limitedToNumberOfLines:1].size.width) {
            NSLog(@"Font size is: %f", i/10);
            self.labelShort.font = [UIFont fontWithName:fontName size:i/10];
            break;
        }
    }
}

关于ios - 如何根据自动缩小的标签为多个标签设置相同的字体比例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26942071/

相关文章:

swift - 滑动侧边栏菜单 IOS 8 Swift

ios - 当选择单元格时,如何阻止 UIView 的背景颜色消失?

ios - 如何安全地停止使用多点连接发送图像

ios - Swift 语言中的委托(delegate)

ios - setNeedsDisplayInMapRect - 已弃用的 iOS7

ios - iOS 7.0.3 中的条形半透明消失了

ios - kUTTypeURL undefined — 在 Swift 中使用未解析的标识符 'kUTTypeURL'

ios - UIImagePickerController 在没有 NS 照片库和相机描述的情况下工作

ios - 如何使用自动布局在 Storyboard 上使网格并排 uiview 响应

iphone - UIView 保存有关模型(业务对象)的信息有多糟糕