如何向左或向右移动UILabel文本?

时间:2013-05-25 17:28:47

标签: ios objective-c nsstring

我正在制作一个计算器,标签中的数字总是会被截断,因此用户无法看到完整的显示。

为了解决这个问题,我被告知我应该制作可以在屏幕左侧或右侧移动标签中的文字的按钮,以便用户可以看到完整的答案和数字。

我该怎么做呢?

1 个答案:

答案 0 :(得分:0)

在iOS6中,您可以使用textAlignment上的UILabel对齐属性。您可以通过媒体资源UIButton访问titleLabel的标签。对于iOS5及更早版本,您无法轻松使用属性字符串,因此您可以更轻松地自行计算。

这基本上涉及查看您放置文本的视图的边界,并确定文本将占用多少空间。 iOS具有计算给定字体的文本大小的方法。

下面的代码是一个示例,它为parent视图添加标签,并在父视图中右对齐UILabel

UILabel * addLabelRightAligned(UIView *parent, NSString *text, UIFont *font)
{
    CGRect frame = {0, 0, 0, 20};
    float padding = 15;                    // give some margins to the text
    CGRect parentBounds = parent.bounds;

    // Figure out how much space the text will consume given a specific font
    CGSize textSize = [text sizeWithFont:font];

    // This is what you are interested in. How we right align the text
    frame.origin.x = parentBounds.size.width - textSize.width - padding;
    frame.origin.y = parentBounds.size.height / 2.0 - textSize.height / 2.0;
    frame.size.width = textSize.width;


    UILabel *label = [[UILabel alloc] initWithFrame:frame];
    label.text = text;
    label.font = font;
    label.backgroundColor = [UIColor clearColor];
    [parent addSubview:label];

    return label;
}