ios - 具有多行 UILabel 的自定义 Tableview 单元格需要动态高度
<p><p>我使用 Interface Builder 创建了一个自定义 TableView 单元格。这是它的样子:</p>
<p> <a href="/image/IxVQA.png" rel="noreferrer noopener nofollow"><img src="/image/IxVQA.png" alt="IB Custom Table Cell"/></a> </p>
<p>对于描述标签,我需要它来自动换行,所以我这样设置:</p>
<p> <a href="/image/viNIk.png" rel="noreferrer noopener nofollow"><img src="/image/viNIk.png" alt="Settings for Description Label"/></a> </p>
<p>在我的 SettingsPageViewController 中,我重写了以下表格 View 方法:</p>
<pre><code>@implementation SBSettingsViewController
{
NSArray *settingHeaders;
NSArray *settingDescriptions;
}
- (void)viewDidLoad {
;
;
// Do any additional setup after loading the view from its nib.
settingHeaders = ;
settingDescriptions = ;
}
- (void)didReceiveMemoryWarning {
;
// Dispose of any resources that can be recreated.
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return ;
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *simpleTableIdentifier = @"SettingsTableCell";
SettingsTableViewCell *cell = (SettingsTableViewCell *);
if (cell == nil)
{
NSArray *nib = [ loadNibNamed:@"SettingsTableCell" owner:self options:nil];
cell = ;
}
cell.settingsHeaderLabel.text = ;
cell.settingsDescriptionLabel.text = ;
cell.settingsDescriptionLabel.lineBreakMode = NSLineBreakByWordWrapping;
cell.settingsDescriptionLabel.numberOfLines = 0;
CGRect appFrame=[ bounds];
cell.settingsDescriptionLabel.preferredMaxLayoutWidth = appFrame.size.width - 15;
;
;
;
return cell;
}
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath{
if () {
;
}
if () {
;
}
if () {
;
}
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return 85;
}
</code></pre>
<p>生成的页面如下所示:</p>
<p> <a href="/image/QrlU6.png" rel="noreferrer noopener nofollow"><img src="/image/QrlU6.png" alt="enter image description here"/></a> </p>
<p>如您所见,第一个表格 View 单元格的描述标签没有自动换行。它只是切断。 <strong>如何将其包裹起来?</strong></p>
<p>另外,我希望动态调整 Tableview 单元格的高度。我试图将 heightForRowAtIndexPath: 更改为 UITableViewAutomaticDimension 但这让它看起来非常奇怪:</p>
<p> <a href="/image/j1r0U.png" rel="noreferrer noopener nofollow"><img src="/image/j1r0U.png" alt="enter image description here"/></a> </p>
<p><strong>如何调整表格 View 高度,以使 1 行描述标签稍短的行?</strong></p>
<p>感谢您的帮助!</p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p>将标题标签顶部、前导、尾随到 superView 和底部(垂直)约束到描述标签。
与描述标签相同 >superView 的前导、尾随和下边距。</p>
<p>现在设置标题标签高度修复和描述标签使多行(Lines = 0)</p>
<p>对于在 viewDidLoad 中设置的 TableView </p>
<pre><code>_tableView.estimatedRowHeight = 100.0;
_tableView.rowHeight = UITableViewAutomaticDimension;
</code></pre>
<p>让我知道这是否有效...</p></p>
<p style="font-size: 20px;">关于ios - 具有多行 UILabel 的自定义 Tableview 单元格需要动态高度,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/34959491/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/34959491/
</a>
</p>
页:
[1]