UITableView cell中label自动换行和自定义label自动换行

换行的前提必须是有足够的高度 才能换 否则不显示超出部分

所以,在设置label换行的时候 要考虑cell的高度,cell的高度也要变化,废话不多说,来段代码:

cell.label.text=[dict objectForKey:@"info"];
    cell.label.numberOfLines=0;  //可多行显示
    cell.label.lineBreakMode=NSLineBreakByWordWrapping;//拆行
设置label的高度
[self changeLabelHeight:cell.label :cell.label.text]; 

//设置label的高度
-(void)changeLabelHeight:(UILabel *)label : (NSString *)string{
    NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:15]};
    //计算UILabel字符显示的实际大小
     size=[string boundingRectWithSize:CGSizeMake(145, 1000)//最大限制的宽和高
                                          options:NSStringDrawingUsesLineFragmentOrigin
                                       attributes:attribute
                                          context:nil].size;
    //重设UILabel实例的frame
    [label setFrame:CGRectMake(label.frame.origin.x, label.frame.origin.y, size.width, size.height)];
   
    NSLog(@"%lf",size.height);
}
//设置cell的高度
//设置行高
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
    NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:15]};
    NSDictionary *dict=[self.listData objectAtIndex:indexPath.row+1];
//获取数据,根据数据来确定长和高
   CGSize size=[[dict objectForKey:@"info"] boundingRectWithSize:CGSizeMake(156, 1000)//最大限制宽和高
                              options:NSStringDrawingUsesLineFragmentOrigin
                           attributes:attribute
                              context:nil].size;
        NSLog(@"row heigth :%lf",size.height+20);
    if (size.height+20<58) {
        return 58;
    }else{
       return size.height+20;
    }
}
时间: 2024-10-11 22:49:23

UITableView cell中label自动换行和自定义label自动换行的相关文章

iOS深入学习(UITableView系列4:使用xib自定义cell)

可以通过继承UITableViewCell重新自定义cell,可以像下面一样通过代码来自定义cell,但是手写代码总是很浪费时间, ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 //CustomTableViewCell.h文件 @interface CustomTableViewCell:UITableViewCell @property (nonat

在EditText中限制输入,自定义样式,监听输入的字符,自动换行

自动获取焦点 <!-- 添加:<requestFocus /> 会自动获取焦点 --> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:ems="10" android:gravity="center_horizontal" android:hint="自

Qt中实现点击一个label,跳转到打开一个浏览器链接

配置模块 首先需要在.pro配置文件中添加QT += network 重写自定义Label .h文件 class MyClickLabel : public QLabel { Q_OBJECT public: explicit MyClickLabel(QWidget *parent = 0); // 构造函数声明 protected: virtual void mouseReleaseEvent(QMouseEvent * ev); // 声明鼠标左键点击事件 signals: void cl

[Swift中错误]missing argument label &#39;greeting:&#39; in call

Swift 中出现这个问题:从第二个参数起,自动加上lable func sayHello(name:String? ,greeting:String)->String { let result = greeting + "," + (name ?? "Guest") + "!" return result } var nickname:String? nickname = "yc" //“Goodmorning前面应该

HTML中Div、span、label标签的区别

div与span 大家在初学div+css布局时,有很多困惑,在div与span的使用过程没觉得有一定的”章法”,觉得两个区别不大,在w3c的关于div和span的定义:div作为分割文档结构自然使它最官方的语义,但是这样的官方语义太让人迷惑,大的结构还好,但是小的地方到底是用div还是用span仍然让人迷惑.其实恰恰是<Microsoft MSDN Library>里面的定义让人豁然开朗. div:指定渲染HTML的容器 span:指定内嵌文本容器 通俗地讲就是如果里面还有其他标签的时候就用

自定义的cell中如果存在着UIButton,那如何将点击事件传递出去呢?

自定义cell后,将indexPath参数传递到自定义的cell中(NSIndexPath为cell的一个retain的属性),自定义的cell申明一个协议,里面提供了一个方法 - (void)touchEventAtIndexPath:(NSIndexPath *)indexPath; ...... @property (nonatomic, assign) id<AppTableViewCellDelegate>delegate; // 将事件传递出去 ...... - (void)but

关于cell中添加子视图 复用重叠问题的解决方法

问题本质: 因为你要添加的子视图并不是在自定义的cell中实现的,而是根据系统给的UITableViewCell这个类创建的实例,每次进图 cellForRow方法都会创建一个cell,每次都要创建一个子视图添(button,label之类的)加进去,会给占用很大的内存,所以采用了复 用的方法,但是问题就来了,当cell超出界面,从队列中拿过来复用的时候,其中子视图的内容并没有消除,这样你会原来的基础上再创建一个子视图添加上去 遮住了原来的视图,一般视图都是透明的这样的话就变成了一层层的叠加.

Swift设置Table View的Cell中Lable自适应内容高度的

@IBOutletweak var myTableView: UITableView! override func viewDidLoad() { super.viewDidLoad() myTableView.estimatedRowHeight = 44.0 myTableView.rowHeight =UITableViewAutomaticDimension } 最后修改在Table Cell中Label的lines属性,将其设置为0.

Android中使用ListView绘制自定义表格(2)

上回再写了<Android中使用ListView绘制自定义表格>后,很多人留言代码不全和没有数据样例.但因为项目原因,没法把源码全部贴上来.近两天,抽空简化了一下,做了一个例子. 效果图如 一.功能: 1.支持列合并 2.考虑了界面刷新优化 3.预留部分接口 4.支持左右滚动 1.枚举类:CellTypeEnum package csdn.danielinbiti.custometableview.item; public enum CellTypeEnum { STRING //字符 ,DI