我正在尝试以编程方式创建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
添加到视图中。
您必须添加以下代码,以便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