【发布时间】:2020-03-27 16:36:28
【问题描述】:
作为我正在构建的应用程序的一部分,我拥有基本的聊天功能。它基本上是一个 UITable 视图,其中 UITableViewCell 仅包含一个 UILabel(聊天消息文本)和一个 UIView(充当语音气泡,围绕文本。代码如下:
class ChatMessageViewCellController: UITableViewCell {
var ChatMessageText = UILabel()
var ChatBubble = UIView()
var leadingConstraint: NSLayoutConstraint!
var trailingConstraint: NSLayoutConstraint!
var isIncoming: Bool! {
didSet {
if self.isIncoming {
self.ChatBubble.backgroundColor = UIColor(named: "customGrey")
self.leadingConstraint.isActive = true
self.trailingConstraint.isActive = false
} else {
self.ChatBubble.backgroundColor = UIColor(named: "customGreen")
self.leadingConstraint.isActive = false
self.trailingConstraint.isActive = true
}
}
}
override func awakeFromNib() {
super.awakeFromNib()
addSubview(ChatBubble)
addSubview(ChatMessageText)
self.ChatBubble.translatesAutoresizingMaskIntoConstraints = false
self.ChatMessageText.translatesAutoresizingMaskIntoConstraints = false
self.ChatBubble.backgroundColor = UIColor(named: "customGreen")
self.ChatBubble.layer.cornerRadius = 10
self.ChatMessageText.numberOfLines = 0
self.ChatMessageText.textColor = .white
self.ChatMessageText.font = UIFont.systemFont(ofSize: 15, weight: UIFont.Weight.light)
let constraints = [
self.ChatMessageText.topAnchor.constraint(equalTo: topAnchor, constant: 16),
self.ChatMessageText.bottomAnchor.constraint(equalTo: bottomAnchor, constant: -32),
self.ChatMessageText.widthAnchor.constraint(lessThanOrEqualToConstant: 220),
self.ChatBubble.topAnchor.constraint(equalTo: ChatMessageText.topAnchor, constant: -16),
self.ChatBubble.trailingAnchor.constraint(equalTo: ChatMessageText.trailingAnchor, constant: 16),
self.ChatBubble.bottomAnchor.constraint(equalTo: ChatMessageText.bottomAnchor, constant: 16),
self.ChatBubble.leadingAnchor.constraint(equalTo: ChatMessageText.leadingAnchor, constant: -16),
]
NSLayoutConstraint.activate(constraints)
self.leadingConstraint = self.ChatMessageText.leadingAnchor.constraint(equalTo: leadingAnchor, constant: 32)
self.trailingConstraint = self.ChatMessageText.trailingAnchor.constraint(equalTo: trailingAnchor, constant: -32)
}
我的问题是: 我不是用标准字符串而是用 NSAttributedStrings 为 UILabel 提供,因为我想让其中的一些链接可点击,部分文本可供用户选择。 所以有人告诉我使用 UITextView 而不是 UILabel。因此,我进行了以下 2 项更改:
- 将
var ChatMessageText = UILabel()更改为var ChatMessageText = UITextView() - 删除了
self.ChatMessageText.numberOfLines = 0,因为 UITextView 没有numberOfLines成员
Xcode 没有抱怨,应用程序编译并运行,但它完全与我的布局混淆,我就是不知道为什么。 UILabel 的所有约束也应该适用于 UITextView - 至少我是这么认为的。但这是屏幕的样子。
我做错了什么?我需要添加/更改约束吗?
【问题讨论】:
-
您是否在您的
UITextView上设置了.isScrollEnabled = false? -
@DonMag:天哪——这么小的东西却产生了这么大的影响。有点美。那解决了它。谢谢你的帮助!!!
-
我添加了我的评论(连同解释和示例)作为答案,以使可能遇到此问题的其他用户受益。
标签: ios uitableview uitextview