当我使用 JSQMessagesViewController 加载消息视图时,很多时候没有消息,所以我想在视图的中间或顶部显示“还没有消息”消息。
我怎样才能做到这一点?
谢谢
当我使用 JSQMessagesViewController 加载消息视图时,很多时候没有消息,所以我想在视图的中间或顶部显示“还没有消息”消息。
我怎样才能做到这一点?
谢谢
可能还有其他更简单的方法可以做到这一点,比如破解集合视图的子视图或其他任何东西,但最终,我认为你会想要实现系统消息,这需要一些时间才能正确,但对于你提到的情况肯定会派上用场以及许多其他您仍然不知道但会遇到的情况。
我正在使用库的 C# Xamarin 移植版本,但概念相似。你可以做这样的事情:
在 JSQMessagesCollectionView 中注册该自定义单元格类型:
this.RegisterNibForCell(JSQMessagesCollectionViewCellActions.Nib("JSQMessagesCollectionViewCellActions"),JSQMessagesCollectionViewCellActions.CellReuseIdentifier("JSQMessagesCollectionViewCellActions"));
this.RegisterNibForCell(JSQMessagesCollectionViewCellActions.Nib("JSQMessagesCollectionViewCellActions"),JSQMessagesCollectionViewCellActions.MediaCellReuseIdentifier("JSQMessagesCollectionViewCellActions"));
在 JSQMessagesCollectionViewCell 中的 ApplyLayoutAttributes 方法中,为 JSQMessagesCollectionViewCellSystem 类型的单元格返回 CGSizeMake(0,0)。像这样的东西:
if (this.IsKindOfClass (new ObjCRuntime.Class ("JSQMessagesCollectionViewCellIncoming"))) {
this.AvatarViewSize = customAttributes.IncomingAvatarViewSize;
} else if (this.IsKindOfClass (new ObjCRuntime.Class ("JSQMessagesCollectionViewCellOutgoing"))) {
this.AvatarViewSize = customAttributes.OutgoingAvatarViewSize;
} else {
this.AvatarViewSize = new CGSize (0, 0);
}
在 JSQMessagesViewController 内的 CellForRowAtIndexPath 中,您可以执行以下操作来使消息居中:
if (messageItem.SenderId == "System") {
cell.TextView.TextAlignment = UITextAlignment.Center;
cell.TextView.TextColor = UIColor.LightGray;
cell.MessageBubbleContainerWidthConstraint.Constant = UIScreen.MainScreen.Bounds.Width - 25;
}
您可以使用 MBProgressHUB 框架,非常简单地完成您的任务。有一个链接https://github.com/jdg/MBProgressHUD