我想动态调整UILabel中的行数。例如,可能有一个长字符串或一个短字符串。如果少于10个字符,则应该有一行。如果有10-20个字符,则应为两行。这个UILabel位于UITableViewCell内。目前,如果有一个长字符串,那么UILabel只会显示" ..."它没有空间,所以字符串被切断了。我怎样才能防止这种情况发生?
答案 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)
答案 3 :(得分:0)
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中的标签实例
注意:如果您有多个动态长度的标签(UIElements),应根据其内容大小进行调整:调整您的标签'内容拥抱和压缩阻力优先级'想要以更高的优先级扩展/压缩。