TableView单元格中的对齐

时间:2017-03-09 02:35:10

标签: ios swift

我一直有对齐问题。邮件标签不断写入时间戳,用户名正在消失。我尝试了建议的约束,但没有任何对我有用。

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier: "cell")

        //Transform Data From ^ to load at the bottom
        tableView.transform = CGAffineTransform (scaleX: 1,y: -1);
        cell?.contentView.transform = CGAffineTransform (scaleX: 1,y: -1);
        cell?.accessoryView?.transform = CGAffineTransform (scaleX: 1,y: -1);

        //Set username label to display username
        let usernameLabel = cell?.viewWithTag(1) as! UILabel
        usernameLabel.text = generalRoomDataArr[indexPath.row].username


        //Set message label to display message
        let messageLabel = cell?.viewWithTag(2) as! UILabel
        messageLabel.text = generalRoomDataArr[indexPath.row].message
        messageLabel.numberOfLines = 0

        //initialize UI Profile Image
        let imageView = cell?.viewWithTag(3) as! UIImageView

        //Make Porfile Image Cirlce
        imageView.layer.cornerRadius = imageView.frame.size.width/2
        imageView.clipsToBounds = true

        //Set timeStampLabel to current time AGO
        let timeStampLabel = cell?.viewWithTag(4) as! UILabel
        timeStampLabel.text = generalRoomDataArr[indexPath.row].timeStamp
        timeStampLabel.numberOfLines = 0

        //Loading and change of Usesrs profile image on chat cell
        let userProfileChatImage = generalRoomDataArr[indexPath.row].photoURL

        //Load profile image(on cell) with URL & Alamofire Library
        let downloadURL = NSURL(string: userProfileChatImage!)
        imageView.af_setImage(withURL: downloadURL as! URL)

        // your cell coding
        return cell!
    }

Problem

StoryBoard

//TableView Cell word wrap (Dynamic Text)
        self.tableView.dataSource = self
        self.tableView.delegate = self
        self.tableView.estimatedRowHeight = 78
        self.tableView.rowHeight = UITableViewAutomaticDimension

我是否还需要将时间戳标签设置为0?

messageLabel.numberOfLines = 0

2 个答案:

答案 0 :(得分:0)

我过去常常使用像你一样使用的标签,并发现NSMutableAttributedString()。有大量的视频和网页可以解释它的工作原理。如果有人喜欢特定的人,他们可以在评论中链接它!我使用attributedStringUITextView来显示我需要的所有内容(基于文本)。我在YouTube上推荐this视频(从12:00开始),因为很难用文字解释。为了解决创建适合不同文本量的UITableViewCell的问题,您需要拖动没有特定宽度或高度约束的UITextView。这将允许它随细胞而变化。然后,使用您拥有的代码......

self.tableView.estimatedRowHeight = 78
self.tableView.rowHeight = UITableViewAutomaticDimension

您的细胞会动态变化。实现这一目标的一个技巧是执行以下步骤:

1)使用UITextView禁用isUserInteractionEnabled = false上的用户互动 2)取消选中Interface Builder(Storyboard)中的EditableSelectable,以及取消选中IB中的Scrolling Enabled

答案 1 :(得分:0)

如果您已经捕获了该屏幕截图中的所有约束条件。我认为您错过了时间戳标签和邮件标签之间的垂直间距约束。添加此约束后,您还需要更改三个标签中的一个的垂直压缩阻力和拥抱优先级。我建议减少邮件标签。