我建立了一个自定义视图根据this tutorial视图渲染4.2
它工作正常,如果应用程序直接在device.But编译在创建IPA文件,并通过iTunes安装它,使聊天信息,在iOS 4.2中,聊天气泡的高度拉伸超过所需大小,并导致聊天气泡重叠。但它在iOS 5中工作正常。这是什么原因?提前致谢。
编辑:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
NSDictionary *dict = (NSDictionary *)[messages objectAtIndex:indexPath.row];
NSString *msg = [[dict objectForKey:@"message"] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
CGSize textSize = { 260.0, 10000.0 };
CGSize size = [msg sizeWithFont:[UIFont boldSystemFontOfSize:13]
constrainedToSize:textSize
lineBreakMode:UILineBreakModeWordWrap];
size.height += padding*3;
CGFloat height = size.height < 65 ? 65 : size.height;
return height;
}
编辑2:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"MessageCellIdentifier";
SMMessageViewTableCell *cell = (SMMessageViewTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[SMMessageViewTableCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
if ([messages count]>0) {
NSLog(@"index path is %d",indexPath.row);
NSDictionary *s = (NSDictionary *) [messages objectAtIndex:indexPath.row];
NSString *sender =allTrim([s objectForKey:@"sender"]);
NSString *senderId = [s objectForKey:@"friendId"];
NSString *message = [s objectForKey:@"message"];
if ([message length]<8)
{
message=[message stringByAppendingString:@" "];
}
message=[message stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *time = [s objectForKey:@"time"];
NSString *locatn = [s objectForKey:@"friendLocation"];
CGSize textSize = { 260.0, 10000.0 };
CGSize size = [message sizeWithFont:[UIFont boldSystemFontOfSize:13]
constrainedToSize:textSize
lineBreakMode:UILineBreakModeWordWrap];
size.width += (padding/2);
cell.messageContentView.text = [message stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
cell.accessoryType = UITableViewCellAccessoryNone;
cell.userInteractionEnabled = YES;
cell.selectionStyle=UITableViewCellSelectionStyleNone;
UIImage *bgImage = nil;
if ([senderId isEqualToString:UIAppDelegate.userId]) {
[email protected]"Me";
bgImage = [[UIImage imageNamed:@"ChatBubbleGray.png"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
[cell.messageContentView setFrame:CGRectMake(padding, padding*2, size.width, size.height)];
[cell.bgImageView setFrame:CGRectMake(cell.messageContentView.frame.origin.x - padding/2,
cell.messageContentView.frame.origin.y - padding/2,
size.width+padding,
size.height+padding)];
cell.senderAndTimeLabel.textAlignment=UITextAlignmentLeft;
} else {
bgImage = [[UIImage imageNamed:@"ChatBubbleGreen.png"] stretchableImageWithLeftCapWidth:24 topCapHeight:15];
[cell.messageContentView setFrame:CGRectMake(320 - size.width - padding,
padding*2,
size.width,
size.height)];
[cell.bgImageView setFrame:CGRectMake(cell.messageContentView.frame.origin.x - padding/2,
cell.messageContentView.frame.origin.y - padding/2,
size.width+padding,
size.height+padding)];
cell.senderAndTimeLabel.textAlignment=UITextAlignmentRight;
}
cell.bgImageView.image = bgImage;
if ([locatn length]>0)
{
cell.senderAndTimeLabel.text = [NSString stringWithFormat:@"%@, %@ %@", sender, locatn, time];
}
cell.senderAndTimeLabel.text = [NSString stringWithFormat:@"%@, %@", sender, time];
}
return cell;
}
嗨,彼得,你可以发布你在UITableView的'heightForRowAtIndexPath:'方法中使用的代码吗? – Mutix 2012-01-30 14:25:17
我刚添加它。 – PETER 2012-01-30 14:36:18
@Mutix请注意,它在设备上直接编译工作正常。仅在创建.ipa文件和通过iTunes安装时出现问题。 – PETER 2012-01-30 14:43:09