当我使用JSQMessagesViewController加载消息视图时,很多时候没有消息,所以我想显示一个"还没有消息"消息,如在视图的中间或顶部。
我该怎么做?
由于
答案 0 :(得分:1)
可能还有其他更简单的方法来执行此操作,例如黑客攻击集合视图的子视图或其他什么,但最终,我认为您希望实现系统消息,这需要一些时间才能正确,但对于案例肯定会派上用场就像你提到的那样以及你还不知道的其他许多案例,但会以你的方式来实现。
我使用的是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);
}
if (messageItem.SenderId == "System") {
cell.TextView.TextAlignment = UITextAlignment.Center;
cell.TextView.TextColor = UIColor.LightGray;
cell.MessageBubbleContainerWidthConstraint.Constant = UIScreen.MainScreen.Bounds.Width - 25;
}
答案 1 :(得分:0)
您可以使用MBProgressHUB框架,它非常简单地实现您的任务。有一个链接https://github.com/jdg/MBProgressHUD