如何在 UITableViewCell 中左对齐或右对齐 UILabel

Posted

技术标签:

【中文标题】如何在 UITableViewCell 中左对齐或右对齐 UILabel【英文标题】:How to align a UILabel left or right in a UITableViewCell 【发布时间】:2016-01-10 03:34:55 【问题描述】:

我目前正在构建一个聊天应用程序,但遇到了一个问题。每当我尝试根据谁发送消息来左对齐或右对齐 UILabel 时,它都不起作用。每次收到消息但标签未更新时,我都会重新加载 TableView。我正在使用 swift 2.0。我还能尝试什么?还是有其他更好的方法?

//in cellForRowAtIndexPath
   if message == my own 
      //tried this
      cell.nameOfSender.frame.origin.y = 0
      cell.nameOfSender.frame.origin.x = widthOfScreen
      //And this          
      cell.nameOfSender.center = CGPointMake(95,15)
 else
      cell.nameOfSender.frame.origin.y = 0
      cell.nameOfSender.frame.origin.x = 0
      //And this          
      cell.nameOfSender.center = CGPointMake(95,15)

【问题讨论】:

不要改变框架,保持框架穿过整个单元格宽度,然后改变textAlignment属性设置来自枚举NSTextAlignment的值 【参考方案1】:

你有两种方法,

首先是使用NSTextAlignment,所以你可以这样做:

cell.lblTitle.textAlignment = .Left

第二种一种是为每种样式(左和右)创建不同的UITableViewCell子类

例如:

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 
    let row = indexPath.row
    //ChatCell is a Subclass of UITableViewCell
    var cell:ChatCell
    // Just Random presenter getting the chat for the row
    let chat = presenter?.getChat(row) 

    //Getting info whether the chat sender is me or not and the instances of each custom cells.
    if chat.sender == ChatSender.Me 
       cell = ChatCellSender(title: "Example")
    else
       cell = ChatCellReceiver(title: "Example")
    
    return cell

【讨论】:

我是否在 MessageCells 中设置标签位置?如果是,用什么方法? 在同一个cellForRowAtIndexPath.

以上是关于如何在 UITableViewCell 中左对齐或右对齐 UILabel的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Xcode 中左对齐导航栏的标题?

如何在ggplot2的注释中左对齐文本

如何在Android的tableview中左对齐文本

如何在引导程序中左右对齐导航栏的列表项

如何在 IPython 笔记本的 pandas DataFrame 列中左对齐文本

在 libgdx TextButton 中左对齐文本