根据 UILabel 文本和图像自动调整单元格大小,例如聊天
Posted
技术标签:
【中文标题】根据 UILabel 文本和图像自动调整单元格大小,例如聊天【英文标题】:Autoresize cell according to UILabel text and image like Chatting 【发布时间】:2016-08-31 07:09:01 【问题描述】:我的问题是如何调整UITableViewCell
中的大文本和图像的固定大小。
根据 WhatsApp 等数据,我需要将单元格设为 autoresize
。我该怎么做。
当我使用UILabel
时,我的单元格正在调整大小,但如果是图像,它会搞砸一切。
请给我建议。提前致谢。
@ddb 这是我正在使用的源代码。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewAutomaticDimension;
-(CGFloat)tableView:(UITableView *)tableView estimatedHeightForRowAtIndexPath:(NSIndexPath *)indexPath
return UITableViewAutomaticDimension;
- (void)didReceiveMemoryWarning
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
return [adminDataArray count];
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *identifier=@"admincell";
adminCell =[tableView dequeueReusableCellWithIdentifier:identifier];
if (adminCell==nil)
adminCell=[[AdminPostTableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:identifier];
adminCell.selectionStyle=UITableViewCellSelectionStyleNone;
[adminCell setBackgroundColor:[UIColor clearColor]];
NSMutableDictionary *getAdminDataDictionary=[adminDataArray objectAtIndex:indexPath.row];
if ([getAdminDataDictionary objectForKey:@"TEXT"])
adminCell.lblSenderAdminPage.text=[getAdminDataDictionary objectForKey:@"TEXT"];
adminCell.lblSenderAdminPage.textColor=[UIColor blackColor];
adminCell.lblSenderAdminPage.backgroundColor=[UIColor whiteColor];
adminCell.lblSenderAdminPage.preferredMaxLayoutWidth=305;
adminCell.lblSenderAdminPage.layer.masksToBounds=YES;
adminCell.lblSenderAdminPage.layer.cornerRadius=5;
adminCell.lblSenderAdminPage.layer.borderWidth=1.0f;
adminCell.lblSenderAdminPage.layer.borderColor=[UIColor blackColor].CGColor;
else if ([getAdminDataDictionary objectForKey:@"IMAGE"])
adminCell.imgSenderAdminPage.image=[getAdminDataDictionary objectForKey:@"IMAGE"];
return adminCell;
【问题讨论】:
请分享您当前的源代码 试试这个链接***.com/a/14841373/4970453 【参考方案1】:你可以试试
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGSize messageSize // Your message size
if (img)
CGFloat imgHeight = img.size.height; // Image size
return messageSize.height + imgHeight + 2* textMarginVertical;
else
return messageSize.height + 2* textMarginVertical;
在类的顶部声明
static CGFloat textMarginVertical = 7f;
编码愉快..
【讨论】:
这里的“img”是什么? 但是当我将大小设置为:- CGFloat imgHeight =admincell.imgSenderAdminPage.size.height; @Abhishek Sharma 不是 UIImageView。它是 UIImage。这是 CGFloat imgHeight =admincell.imgSenderAdminPage.size.height 工作??? 不,先生。请给我一些建议?以上是关于根据 UILabel 文本和图像自动调整单元格大小,例如聊天的主要内容,如果未能解决你的问题,请参考以下文章
以自定义样式 UITableViewCell 自动调整 UILabel
如何根据里面的 UILabel 子视图调整 UICollectionView 中的单元格大小
以编程方式动态调整多行 UILabel 和随附的表格视图单元格