JSQMessagesViewController 找不到 heightForCellTopLabelAtIndexPath
JSQMessagesViewController can't find heightForCellTopLabelAtIndexPath
正如我的问题所说:我目前正在 Xamarin.iOS 中实现 JSQMessagesViewController 组件,目前一切正常,但由于某种原因,我找不到 this link 中描述的 heightForCellTopLabelAtIndexPath 方法.所有其他方法对我来说都是可见的,甚至 returns 顶部单元格标签的属性文本也是如此。
感谢您的帮助!
哇,我什至不知道你可以在 Xamarin 应用程序中使用这个库,而且我也没有在 Xamarin 中做任何事情,但这太酷了。那么根据你的问题。我也看不到该方法,所以可能文档已关闭但可以使用:
override func collectionView(_ collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForMessageBubbleTopLabelAt indexPath: IndexPath!) -> CGFloat {
return firstMessageInSet(indexOfMessage: indexPath) ? 0 : kJSQMessagesCollectionViewCellLabelHeightDefault
}
唯一的区别是它引用的是 messageBubbleTopLabel
而不是 CellTopLabel
per say。我认为这是正确的使用方法。
在提供的屏幕截图中,我展示了这如何影响消息的外观。第一条消息的大小设置为 kJSQMessagesCollectionViewCellLabelHeightDefault
,后面的消息设置为 0
因此,如果这是您想要实现的目标,那么这就是适合您的方法。如果没有,请告诉我,我会看看是否还有其他我们可以做的事情。
继续努力。
我认为您正在寻找 GetMessageBubbleTopLabelHeight!
我不知道该库有任何面向 Xamarin 的文档,但我很乐意为您提供示例用法 =)
我是这样使用函数的:
public override nfloat GetMessageBubbleTopLabelHeight (MessagesCollectionView collectionView, MessagesCollectionViewFlowLayout collectionViewLayout, NSIndexPath indexPath)
{
Message message = Messages [indexPath.Row];
if (message.SenderId == Sender.UserId.ToString())
return 0.0f;
if (indexPath.Row - 1 >= 0) {
Message previousMessage = Messages [indexPath.Row - 1];
if (previousMessage.SenderId == message.SenderId)
return 0.0f;
}
return 20.0f;
}
最后我只是使用了 GetCellTopLabelAttributedText 并对其进行了修改以适合我的用例。换句话说,我将文本居中对齐,删除了 contentInset 并更改了字体。我放弃了寻找缺少的方法
正如我的问题所说:我目前正在 Xamarin.iOS 中实现 JSQMessagesViewController 组件,目前一切正常,但由于某种原因,我找不到 this link 中描述的 heightForCellTopLabelAtIndexPath 方法.所有其他方法对我来说都是可见的,甚至 returns 顶部单元格标签的属性文本也是如此。
感谢您的帮助!
哇,我什至不知道你可以在 Xamarin 应用程序中使用这个库,而且我也没有在 Xamarin 中做任何事情,但这太酷了。那么根据你的问题。我也看不到该方法,所以可能文档已关闭但可以使用:
override func collectionView(_ collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForMessageBubbleTopLabelAt indexPath: IndexPath!) -> CGFloat {
return firstMessageInSet(indexOfMessage: indexPath) ? 0 : kJSQMessagesCollectionViewCellLabelHeightDefault
}
唯一的区别是它引用的是 messageBubbleTopLabel
而不是 CellTopLabel
per say。我认为这是正确的使用方法。
在提供的屏幕截图中,我展示了这如何影响消息的外观。第一条消息的大小设置为 kJSQMessagesCollectionViewCellLabelHeightDefault
,后面的消息设置为 0
因此,如果这是您想要实现的目标,那么这就是适合您的方法。如果没有,请告诉我,我会看看是否还有其他我们可以做的事情。
继续努力。
我认为您正在寻找 GetMessageBubbleTopLabelHeight!
我不知道该库有任何面向 Xamarin 的文档,但我很乐意为您提供示例用法 =)
我是这样使用函数的:
public override nfloat GetMessageBubbleTopLabelHeight (MessagesCollectionView collectionView, MessagesCollectionViewFlowLayout collectionViewLayout, NSIndexPath indexPath)
{
Message message = Messages [indexPath.Row];
if (message.SenderId == Sender.UserId.ToString())
return 0.0f;
if (indexPath.Row - 1 >= 0) {
Message previousMessage = Messages [indexPath.Row - 1];
if (previousMessage.SenderId == message.SenderId)
return 0.0f;
}
return 20.0f;
}
最后我只是使用了 GetCellTopLabelAttributedText 并对其进行了修改以适合我的用例。换句话说,我将文本居中对齐,删除了 contentInset 并更改了字体。我放弃了寻找缺少的方法