菜鸟教程小白 发表于 2022-12-13 03:44:10

ios - UITableViewCell 被选中后更改 subview 位置


                                            <p><p>我使用 AutoLayout 创建了一个动态单元格,将代码放入 <code>(void)updateConstraints</code> 单元格的 <code>subview</code> 方法中,设置 <code>BOOL</code> 值以便自定义 AutoLayout 代码只运行一次,并在 View Controller 调用中</p>

<pre><code>;
;
</code></pre>

<p>就在返回单元格之前。一切似乎都很好,但我遇到了奇怪的问题,当我选择单元格时,它的所有 subview (或它本身?)改变位置。</p>

<p> <img src="/image/lrZeZ.png" alt="table view"/> </p>

<p>这个漂亮箭头指向的单元格显示了它;]</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>我遇到了同样的错误并花了大约一天的时间来修复这个问题……为了解决问题,我在单元格和内容 View 上设置了不同的背景颜色。在第一次显示表格 View 之后,一切似乎都正常工作,但在选择单元格后,contentView 会跳来跳去 - 有时在选择时,有时在取消选择时(我立即在 <code>tableView:didSelectRowAtIndexPath:</code> 中执行此操作),并且单元格的背景变得可见。所以我认为单元格没有重新建立正确的 contentView 尺寸。</p>

<p>最后结果证明,至少在 iOS 8 中,您需要为单元格以及 contentView 设置适当的 autoresizingMasks,然后通过将 translatesAutoresizingMaskIntoConstraints 设置为 YES 使布局系统将它们转换为约束。同时这个标志需要在你的 contentView 的所有 subview 上为 NO。</p>

<p>这是我对自定义单元格的初始化:</p>

<pre><code>- (void)awakeFromNib {

    // enable auto-resizing contentView
    ;
    ;
    self.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    // remove autoresizing constraints from subviews
    for (UIView *view in ) {
      view.translatesAutoresizingMaskIntoConstraints = NO;
    }
}
</code></pre>

<p>对我来说就像一个魅力。作为记录,我正在使用 iOS 8 中引入的 UITableViewCell 自动调整大小,如下所示:</p>

<pre><code>// enable automatic row heights in your UITableViewController subclass
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 80.0; // set to whatever your &#34;average&#34; cell height is
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - UITableViewCell 被选中后更改 subview 位置,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/27275447/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/27275447/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - UITableViewCell 被选中后更改 subview 位置