如何根据ios中的设备宽度将行拆分为下一行

时间:2015-12-05 06:45:44

标签: ios xcode uilabel

我是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是一个很长的字符串,它的右边是。

4 个答案:

答案 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];

不调用该方法