我有一个应用程序,允许用户向每个人发送消息。通过将发送的消息保存在本地SQLite数据库中,同时实际将消息发送到数据库并使用推送通知将消息发送到收件人的SQLite数据库来完成该过程。设置我工作得很好。但是,我感到困惑的是如何为用户设置实际的交互式UI(我正在使用XCode
)。我认为它应该是UITableView
,每个表格单元格代表一条消息。但是,通过这种方法,我遇到了一些要求:
可变TextView大小
与常规iOS
消息传递一样,TextView
的大小需要是可变的,调整其维度以适合每条消息中的所有文本。我不知道如何做到这一点。我对如何通常改变大小有了一般的了解,但是根本不知道如何根据该视图中的文本动态地使用它。
可变TextView位置
同样,与常规iOS
消息一样,textview需要偏移到右侧或左侧,具体取决于发件人是用户还是正在与之交谈的人。我也不知道该怎么做,因为它改变了textview的中心
非可选择
Xcode允许按下细胞。处理此选择后发生的事情可以通过didSelectRowatIndexPath
tableView函数来实现。我可以简单地实现这一点,但是单击单元格会使其变暗以指示它已被按下。我想消除这一点,同时保留选择一些文本,复制和粘贴它或其他任何内容的能力(就像在手机上正常发送消息一样)。
其他方法?
这是问题的真正含义。我已经考虑过上述方法,因为基于我对XCode
UI元素的有限经验,这就是我能够提出的所有方法。如果有一个更好的方法(甚至可能是一个pod或框架),我很乐意听到它。我不需要消息传递用户界面看起来惊人的,只是简洁干净。
答案 0 :(得分:2)
我建议如下:
可变TextView尺寸:
我假设你使用自动布局。如果你还没有,请考虑使用它,因为它让生活更轻松!
如果您使用UITableView
,则可以使用自定义单元格动态调整其UITableViewCells
的高度,具体取决于实际内容。您可以找到如何执行此操作的教程here
可变TextView位置:
我假设您在表格视图单元格中有UITextView
。在这种情况下,您必须将自动布局约束设置为单元格contentView
的边框。如果您定义UITableViewCell
的自定义子类,则可以在此类中定义2个IBOutlet
属性,这些属性链接为表示左侧和右侧布局约束(例如var leftLayoutConstraint: NSLayoutConstraint
)。然后,您可以在布置单元格时根据需要设置约束的constant
属性,即在自定义表格视图单元格的layoutSubviews
函数中。
<强>非可选择性:强>
我不确定你的意思是“我根本不能实现这个”。请确保将delegate
的{{1}}属性设置为要处理单元格选择的视图控制器。默认情况下,选择单元格会更改单元格颜色,但您可以更改此项:在故事板中,选择表视图的原型单元格,然后打开Xcode的实用程序窗格(最右上方的按钮)。在“表视图单元格”下,您可以找到“选择”,您可以将其设置为“无”。
我希望这有帮助!