You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

125 lines
3.0 KiB

//
// XHMessageBubbleView.h
// MessageDisplayExample
//
// Created by HUAJIE-1 on 14-4-24.
// Copyright (c) 2014年 嗨,我是曾宪华(@xhzengAIB),曾加入YY Inc.担任高级移动开发工程师,拍立秀App联合创始人,热衷于简洁、而富有理性的事物 QQ:543413507 主页:http://zengxianhua.com All rights reserved.
//
#import <UIKit/UIKit.h>
// Views
#import "XHMessageTextView.h"
#import "XHMessageInputView.h"
#import "XHBubblePhotoImageView.h"
#import "SETextView.h"
#import "FLAnimatedImageView.h"
#import "FLAnimatedImage.h"
// Macro
#import "XHMacro.h"
// Model
#import "XHMessage.h"
// Factorys
#import "XHMessageAvatarFactory.h"
#import "XHMessageVoiceFactory.h"
#define kXHMessageBubbleDisplayMaxLine 200
#define kXHTextLineSpacing 3.0
@interface XHMessageBubbleView : UIView
/**
* 目标消息Model对象
*/
@property (nonatomic, strong, readonly) id <XHMessageModel> message;
/**
* 自定义显示文本消息控件,子类化的原因有两个,第一个是屏蔽Menu的显示。第二是传递手势到下一层,因为文本需要双击的手势
*/
@property (nonatomic, weak, readonly) SETextView *displayTextView;
/**
* 用于显示气泡的ImageView控件
*/
@property (nonatomic, weak, readonly) UIImageView *bubbleImageView;
/**
* 专门用于gif表情显示控件
*/
@property (nonatomic, weak, readonly) FLAnimatedImageView *emotionImageView;
/**
* 用于显示语音的控件,并且支持播放动画
*/
@property (nonatomic, weak, readonly) UIImageView *animationVoiceImageView;
/**
* 用于显示语音未读的控件,小圆点
*/
@property (nonatomic, weak, readonly) UIImageView *voiceUnreadDotImageView;
/**
* 用于显示语音时长的label
*/
@property (nonatomic, weak, readonly) UILabel *voiceDurationLabel;
/**
* 用于显示仿微信发送图片的控件
*/
@property (nonatomic, weak, readonly) XHBubblePhotoImageView *bubblePhotoImageView;
/**
* 显示语音播放的图片控件
*/
@property (nonatomic, weak, readonly) UIImageView *videoPlayImageView;
/**
* 显示地理位置的文本控件
*/
@property (nonatomic, weak, readonly) UILabel *geolocationsLabel;
/**
* 设置文本消息的字体
*/
@property (nonatomic, strong) UIFont *font UI_APPEARANCE_SELECTOR;
/**
* 初始化消息内容显示控件的方法
*
* @param frame 目标Frame
* @param message 目标消息Model对象
*
* @return 返回XHMessageBubbleView类型的对象
*/
- (instancetype)initWithFrame:(CGRect)frame
message:(id <XHMessageModel>)message;
/**
* 获取气泡相对于父试图的位置
*
* @return 返回气泡的位置
*/
- (CGRect)bubbleFrame;
/**
* 根据消息Model对象配置消息显示内容
*
* @param message 目标消息Model对象
*/
- (void)configureCellWithMessage:(id <XHMessageModel>)message;
/**
* 根据消息Model对象计算消息内容的高度
*
* @param message 目标消息Model对象
*
* @return 返回所需高度
*/
+ (CGFloat)calculateCellHeightWithMessage:(id <XHMessageModel>)message;
@end