-(CGFloat)XSGetPicWide:(XSChatMessageModel*)model{
///图片
CGSize imageSize = CGSizeMake([model.imgWidth floatValue], [model.imgHeight floatValue]);
CGFloat maxWidth = SCREENWIDTHSU - 2*40*SCALESU - 2*16*SCALESU - 2*12*SCALESU;
CGFloat maxHeight = SCREENHEIGHTSU / 4;
CGFloat finalWidth = 0;
CGFloat finalHeight = 0;
if (imageSize.width >= maxWidth) {
finalWidth = maxWidth;
finalHeight = finalWidth * imageSize.height/imageSize.width;
if (finalHeight > maxHeight) {
finalHeight = maxHeight;
finalWidth = finalHeight * imageSize.width/imageSize.height;
}
}else if (imageSize.height >= maxHeight){
finalHeight = maxHeight;
finalWidth = finalHeight * imageSize.width/imageSize.height;
if (finalWidth > maxWidth) {
finalWidth = maxWidth;
finalHeight = finalWidth * imageSize.height/imageSize.width;
}
}else {
finalWidth = imageSize.width;
finalHeight = imageSize.height;
}
return finalWidth;
}
- (CGFloat)getLabelHeightWithText:(NSString *)text
width:(CGFloat)width
font:(UIFont *)font {
CGRect rect = [text boundingRectWithSize:CGSizeMake(width, MAXFLOAT)
options:NSStringDrawingTruncatesLastVisibleLine| NSStringDrawingUsesLineFragmentOrigin| NSStringDrawingUsesFontLeading
attributes:@{NSFontAttributeName:font}
context:nil];
return rect.size.width;
}
-(void)XSLongPress:(UILongPressGestureRecognizer *)ges{
if (ges.state == UIGestureRecognizerStateBegan) {
NSIndexPath * indexPath = [self.tableView indexPathForRowAtPoint:[ges locationInView:self.tableView]];
self.XSSelectRow = indexPath.row;
if (indexPath == nil) return;
if ([UIMenuController sharedMenuController].isMenuVisible) {
[[UIMenuController sharedMenuController] setMenuVisible:NO animated:YES];
}else{
CGFloat x = 0;
CGFloat y = 0;
UITableViewCell * cell = [self.tableView cellForRowAtIndexPath:indexPath];
XSChatMessageModel * model = self.dataSource[indexPath.row];
if ([model.type isEqualToString:@"4"]) {
// 礼物
if ([model.cellType isEqualToString:@"left"]) {
// 左侧的礼物
y = 12*XSWIDESCALE;
x = 163*XSWIDESCALE;
}else if ([model.cellType isEqualToString:@"right"]){
// 右侧的礼物
y = 12*XSWIDESCALE;
x = XS_WIDTH - 163*XSWIDESCALE;
}
}else if ([model.type isEqualToString:@"5"]){
// 直播间
}else if ([model.type isEqualToString:@"2"]){
//图片
if ([model.cellType isEqualToString:@"left"]) {
// 左侧的图片
y = 32*XSWIDESCALE;
x = 68*XSWIDESCALE + [self XSGetPicWide:model]/2.0;
}else if ([model.cellType isEqualToString:@"right"]){
// 右侧的图片
y = 32*XSWIDESCALE;
x = XS_WIDTH - 68*XSWIDESCALE - [self XSGetPicWide:model]/2.0;
}
}else if ([model.type isEqualToString:@"1"]){
// 文字
if ([model.cellType isEqualToString:@"left"]) {
// 左侧的文字
y = 12*XSWIDESCALE;
CGFloat wide = [self getLabelHeightWithText:model.content width:(SCREENWIDTHSU - SCALESU*(2*40 + 2*16 + 2*12 + 2*14)) font:PINGFANGSURegular(14*SCALESU)];
x = 68*XSWIDESCALE + (wide + 28*XSWIDESCALE)/2.0;
}else if ([model.cellType isEqualToString:@"right"]){
// 右侧的文字
y = 12*XSWIDESCALE;
CGFloat wide = [self getLabelHeightWithText:model.content width:(SCREENWIDTHSU - SCALESU*(2*40 + 2*16 + 2*12 + 2*14)) font:PINGFANGSURegular(14*SCALESU)];
x = XS_WIDTH -68*XSWIDESCALE - (wide + 28*XSWIDESCALE)/2.0;
}
}
UIMenuItem * deleteLink = [[UIMenuItem alloc]initWithTitle:@"删除" action:@selector(XSdelete:)];
// [[UIMenuController sharedMenuController] setMenuItems:[NSArray arrayWithObjects:deleteLink, nil]];
[UIMenuController sharedMenuController].menuItems = @[deleteLink];
[[UIMenuController sharedMenuController] setTargetRect:CGRectMake(x, y, 0, 0) inView:cell];
[[UIMenuController sharedMenuController] setMenuVisible:YES animated:YES];
}
}
}
//注意必须写这个方法,UIMenuController才会显示
-(BOOL)canBecomeFirstResponder{
return YES;
}
//等待删除的请求
-(void)XSdelete:(UIMenuController *)menu{
// XSChatMessageModel * model = self.dataSource[self.XSSelectRow];
[self.dataSource removeObjectAtIndex:self.XSSelectRow];
[self.tableView reloadData];
NSLog(@"删除");
}
!!!如果UIMenuController不显示,一定要注意有没有重新这句-(BOOL)canBecomeFirstResponder
//注意必须写这个方法,UIMenuController才会显示
-(BOOL)canBecomeFirstResponder{
return YES;
}
网友评论