菜鸟教程小白 发表于 2022-12-12 18:20:38

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 = @&#34;SettingsTableCell&#34;;

SettingsTableViewCell *cell = (SettingsTableViewCell *);
if (cell == nil)
{
    NSArray *nib = [ loadNibNamed:@&#34;SettingsTableCell&#34; 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]
查看完整版本: ios - 具有多行 UILabel 的自定义 Tableview 单元格需要动态高度