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 "average" 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]