我是ios的新手,我正在学习使用自定义单元格的tableView,我已经成功制作了代码,但现在我有一个问题,我设置标题文本的标签正在切割设备宽度的右侧,如果用设备宽度切割,我希望该文本出现在下一行。任何人都可以告诉我吗?
我的代码如下 的码
UILabel *titleLbl = (UILabel *)[cell viewWithTag:102];
CGRect frame = self.titleLbl.frame;
frame.size.height = [self getHeightforController:self.titleLbl];
self.titleLbl.frame = frame;
titleLbl.text = str;
这里的durationtxt是一个很长的字符串,它的右边是。
答案 0 :(得分:1)
使用此功能,您需要动态高度才能使用所有设备
- (CGFloat)getHeightforController:(id)view{
UILabel *tempView =(UILabel *)view;
NSStringDrawingContext *context = [[NSStringDrawingContext alloc] init];
context.minimumScaleFactor = 0.8;
float width = tempView.frame.size.width;
width = width * ([[UIScreen mainScreen] bounds].size.width/320);
CGSize size=[tempView.text boundingRectWithSize:CGSizeMake(tempView.frame.size.width, 200)
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName : tempView.font}
context:context].size;
return size.height;
}
它将返回您标签所需的高度,并将此方法称为:
CGRect frame = self.yourlbl.frame;
frame.size.height = [self getHeightforController:self.yourlbl];
self.yourlbl.frame = frame;
那解决了..
答案 1 :(得分:0)
UIKit框架参考将是您最好的朋友。这是指向UILabel Class Reference的链接。
如果需要,您需要设置durationLbl.lineBreakMode = UILineBreakModeWordWrap
并设置durationLbl.numberOfLines
。 0表示任意数量的行,是默认值。
答案 2 :(得分:0)
更新您的代码:UILabel *titleLbl = (UILabel *)[cell viewWithTag:102]; titleLble.text = str
CGRect frame = titleLbl.frame;
frame.size.height = [self getHeightforController:titleLbl]; titleLbl.frame = frame;'
您收到此错误,因为titleLbl是您的单元格的对象,而不是您的ViewController。请不要忘记在调用该方法之前设置文本
答案 3 :(得分:0)
请尝试一次:
lbl.numberOfLines = 0;
lbl.text = str;
[sizeToFit];
不调用该方法