UITableViewCell textLabel 在选择时改变位置

Posted

技术标签:

【中文标题】UITableViewCell textLabel 在选择时改变位置【英文标题】:UITableViewCell textLabel changing position on selection 【发布时间】:2015-05-02 18:44:19 【问题描述】:

我使用代码创建了一个 UITableView 和一个 UITableViewCell 的子类,它显示得非常好,直到我选择了单元格。

单元格的文本标签有时会向右移动或不移动

选择前问题的图像表示

选择后问题的图像表示

相关代码

class MyCell: UITableViewCell 

override func layoutSubviews() 
    super.layoutSubviews()
    // here I fixed the image at a specific point
    self.imageView?.bounds = CGRectMake(0, 0, 100, 125)
    self.imageView!.frame = CGRectMake(0, 0, 100, 125)
    self.imageView?.contentMode = .ScaleAspectFill

 
 override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let cell = MyCell(style: UITableViewCellStyle.Default, reuseIdentifier: "FeedCell")

    self.configureCell(cell, atIndexPath: indexPath)

    return cell


func configureCell(cell: MyCell, atIndexPath indexPath: NSIndexPath) 
    let item = self.items[indexPath.row] as MWFeedItem 
    cell.textLabel?.text = item.title 
    cell.textLabel?.font = UIFont.systemFontOfSize(12.0)
    cell.textLabel?.numberOfLines = 0

【问题讨论】:

【参考方案1】:

你真的应该在你的子类中定义你自己的图像视图和文本标签(具有不同的名称),并应用约束来根据单元格的大小来布置它们,然后在控制器中设置行高,以便事情是正确显示。

即使在您的第一个图像中,图像的大小也不正确,因此单元和控制器之间的配置不匹配。您当前使用的属性在大小和位置方面应被视为私有私有,因为您不拥有设置视图这些功能的实现。

【讨论】:

对于任何回到这个问题的人。每当单元格移动到选定状态时,我的自定义单元格中的 textLabel 就会跳来跳去。我所做的只是在我的自定义单元格中定义我自己的 textLabel 属性,然后从内置的 textLabel 属性切换到我的新自定义属性。繁荣!问题解决了!

以上是关于UITableViewCell textLabel 在选择时改变位置的主要内容,如果未能解决你的问题,请参考以下文章

在 UITableViewCell 中设置 textLabel 的宽度

iPhone UITableViewCell:重新定位 textLabel

为啥 UITableViewCell textLabel 属性是可选的?

如何防止 UITableViewCell 中的缩进 contentView 而不是 textLabel

UITableViewCell textlabel 内容不显示任何内容

在 UITableViewCell 中编辑 TextLabel [重复]