• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 03:44:10 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

  [cell setNeedsUpdateConstraints];
  [cell updateConstraintsIfNeeded];

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

table view

这个漂亮箭头指向的单元格显示了它;]



Best Answer-推荐答案


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

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

这是我对自定义单元格的初始化:

- (void)awakeFromNib {

    // enable auto-resizing contentView
    [self setTranslatesAutoresizingMaskIntoConstraints:YES];
    [self.contentView setTranslatesAutoresizingMaskIntoConstraints:YES];
    self.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

    // remove autoresizing constraints from subviews
    for (UIView *view in [self.contentView subviews]) {
        view.translatesAutoresizingMaskIntoConstraints = NO;
    }
}

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

// 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

关于ios - UITableViewCell 被选中后更改 subview 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27275447/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap