在UITableViewCell中动态调整UILabel?

时间:2018-02-26 05:32:36

标签: ios swift uitableview uilabel

我想动态调整UILabel中的行数。例如,可能有一个长字符串或一个短字符串。如果少于10个字符,则应该有一行。如果有10-20个字符,则应为两行。这个UILabel位于UITableViewCell内。目前,如果有一个长字符串,那么UILabel只会显示" ..."它没有空间,所以字符串被切断了。我怎样才能防止这种情况发生?

4 个答案:

答案 0 :(得分:0)

尝试:

nameOfLabel.numberOfLines = 0

0应该是动态的。

答案 1 :(得分:0)

首先从Storyboard

为该UILabel设置numberOfLines为0

比设置UITableView的估计高度

self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.estimatedRowHeight = 108.0

比添加heightForRowAt方法

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
            return UITableViewAutomaticDimension
    }

希望有所帮助!

答案 2 :(得分:0)

来自左上角的Constaints对象label和label.numberOfLine = 0使其根据动态内容动态调整大小。Contraints ScreenShot

Number Of Line ScreenShot

答案 3 :(得分:0)

  • 分配并实施tableview dataSource和delegate
  • UITableViewAutomaticDimension分配给rowHeight& estimatedRowHeight
  • 实施委托/数据源方法(即heightForRowAt并向其返回值UITableViewAutomaticDimension

-

目标C:

// in ViewController.h
#import <UIKit/UIKit.h>

@interface ViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>

  @property IBOutlet UITableView * table;

@end

// in ViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    self.table.dataSource = self;
    self.table.delegate = self;

    self.table.rowHeight = UITableViewAutomaticDimension;
    self.table.estimatedRowHeight = UITableViewAutomaticDimension;
}

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

    return UITableViewAutomaticDimension;
}

<强>夫特:

@IBOutlet weak var table: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    // Don't forget to set dataSource and delegate for table
    table.dataSource = self
    table.delegate = self

    // Set automatic dimensions for row height
    table.rowHeight = UITableViewAutomaticDimension
    table.estimatedRowHeight = UITableViewAutomaticDimension
}



// UITableViewAutomaticDimension calculates height of label contents/text
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return UITableViewAutomaticDimension
}

用于UITableviewCell中的标签实例

  • 设置行数= 0(&amp; line break mode = truncate tail)
  • 相对于其superview / cell容器设置所有约束(顶部,底部,右侧)。
  • 可选:如果您希望标签覆盖最小垂直区域,即使没有数据,也可以设置标签的最小高度。

enter image description here

注意:如果您有多个动态长度的标签(UIElements),应根据其内容大小进行调整:调整您的标签'内容拥抱和压缩阻力优先级'想要以更高的优先级扩展/压缩。