以动态大小以编程方式创建UILabel

问题描述 投票:1回答:1

我正在尝试以编程方式创建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添加到视图中。

ios objective-c swift xcode uilabel
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.