菜鸟教程小白 发表于 2022-12-11 19:49:08

ios - 在 UITableView 中使用动态标签宽度管理自动标题高度


                                            <p><p>我想创建一个具有动态高度的 UITableViewheader 。我在 View 中有四个标签,并且必须根据每个 UILabel 中的内容调整标题的高度。我想实现与此图像类似的东西。 <a href="/image/JMcov.png" rel="noreferrer noopener nofollow">Sample image.</a> </p>

<p>这里标签的宽度将根据屏幕大小动态变化。 “类型”标签将覆盖大约 2/3 的屏幕,其余部分将在三个标签之间平均分配。这里根据屏幕大小标签可能是多行的,我想根据标签的内容管理主视图的高度。</p>

<p>当我为标签提供固定宽度约束时,我能够成功地管理高度,但我想保持标签的宽度是动态的。这是一个 UITableViewheader 。任何帮助将不胜感激。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>像 tableViewCell 一样为 header 和设计制作一个 customCell。</p>

<p> <a href="/image/PCvEj.png" rel="noreferrer noopener nofollow"><img src="/image/PCvEj.png" alt="enter image description here"/></a> </p>

<p>设计是如何完成的:</p>

<p>SMS EMAIL 和 PUSH NOTIFICATION 被封装在一个 stackView 中,并带有 TYPE 标签。</p>

<p>这是层次结构。</p>

<p> <a href="/image/agisa.png" rel="noreferrer noopener nofollow"><img src="/image/agisa.png" alt="enter image description here"/></a> </p>

<p>这就是Type(2/3)的布局设计。自己准确计算。</p>

<p> <a href="/image/85Y5I.png" rel="noreferrer noopener nofollow"><img src="/image/85Y5I.png" alt="enter image description here"/></a> </p>

<p>这是用于stackView的。</p>

<p> <a href="/image/3ViZN.png" rel="noreferrer noopener nofollow"><img src="/image/3ViZN.png" alt="enter image description here"/></a> </p>

<p>两者都是带有superView(即单元格)的自动布局</p>

<p><strong>堆栈 View :</strong></p>

<p> <a href="/image/P7ind.png" rel="noreferrer noopener nofollow"><img src="/image/P7ind.png" alt="enter image description here"/></a> </p>

<p>对于 TYPE 标签。</p>

<p> <a href="/image/aH9Lt.png" rel="noreferrer noopener nofollow"><img src="/image/aH9Lt.png" alt="enter image description here"/></a> </p>

<p>将此单元格插入为 tableView 的 headerView。</p>

<p><strong>怎么做?</strong></p>

<p><strong>在 viewDidLoad 中:</strong></p>

<pre><code>tableView.register(UINib.init(nibName: String(describing: TableHeader.self), bundle: nil), forCellReuseIdentifier: &#34;headerCell&#34;)
</code></pre>

<p>在你各自的 ViewController 中添加这两个函数。</p>

<pre><code>func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -&gt; UIView? {
    let cell = tableView.dequeueReusableCell(withIdentifier: &#34;headerCell&#34;) as! TableHeader
    return cell
}

func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -&gt; CGFloat {
    return 58
}
</code></pre>

<p>这是输出:</p>

<p> <a href="/image/DVV5t.png" rel="noreferrer noopener nofollow"><img src="/image/DVV5t.png" alt="enter image description here"/></a> </p>

<p><strong>对于 iOS 8:</strong></p>

<p>StackView 不存在,所以我们需要使用 <strong>UIView</strong>。因为解释自动布局很棘手,所以我只是分享了我的项目,这更容易理解。您可以从 <a href="https://github.com/junaid4058/stackAnswerAutolayout" rel="noreferrer noopener nofollow">here</a> 结帐</p>

<p>不使用 StackView 的输出如下:</p>

<p>已拍摄 2 次。已给出颜色以便更好地理解。</p>

<p> <a href="/image/ch2rC.gif" rel="noreferrer noopener nofollow"><img src="/image/ch2rC.gif" alt="enter image description here"/></a> </p></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 在 UITableView 中使用动态标签宽度管理自动标题高度,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/44411349/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/44411349/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 在 UITableView 中使用动态标签宽度管理自动标题高度