【问题标题】:Creating UILabel programmatically with dynamic size以编程方式创建具有动态大小的 UILabel
【发布时间】:2020-10-04 05:05:29
【问题描述】:

我正在尝试以编程方式创建UILabel,但高度和宽度应根据内容动态设置。我不想创建具有一定宽度和高度的初始 CGRect,这会在我的情况下导致设计问题。

我尝试做的是:

        self.freeLabel = [[UILabel alloc] initWithFrame:CGRectMake(frameView.layer.frame.size.width - 50, -8, 120, 25)];
        self.freeLabel.numberOfLines = 0;
        [self.freeLabel setBackgroundColor:[UIColor colorWithRed:0.91 green:0.18 blue:0.42 alpha:1.0]];
        self.freeLabel.layer.cornerRadius = 5;
        self.freeLabel.layer.masksToBounds = YES;
        [self addSubview:self.freeLabel];
        [self sizeToFit];

但这样我无法将UILabel 添加到我的视图中。

【问题讨论】:

  • 初始 frame 可能是 zero。你为什么关心这个?
  • 为您的标签添加约束...
  • freeLabel 是如何定义的?最重要的是...您还想根据文本大小调整大小...对吗?

标签: ios objective-c swift xcode uilabel


【解决方案1】:

您必须添加以下代码,以便self.freeLabel 具有新的高度。

[self.freeLabel sizeToFit];

self.freeLabel.frame = CGRectMake(frameView.layer.frame.size.width - 50, -8, 120, self.freeLabel.frame.size.height)];

self.frame = // update size based on the height of the label.

但是我有一些我觉得不对的地方。

为什么self.freeLabel 的x 位置定义为frameView.layer.frame.size.width - 50 而标签的宽度为120。这个标签肯定会消失在你的视野之外。所以frameView.layer.frame.size.width - 50 应该是frameView.layer.frame.size.width - 120

【讨论】:

    猜你喜欢
    • 2013-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多