正如您在照片中看到的,有两个标签 1 个方形图标和 1 个个人资料照片。第一个标签没有动态调整大小。第二个没有正确对齐。
我能做些什么来解决这个问题?什么是常见的模式?
现在我对中间的视图有另一个问题。当标题变大时,它不会下降。有什么解决办法吗?
更新:正如你所说,我在 layoutSubviews 中解决了它。非常感谢!
正如您在照片中看到的,有两个标签 1 个方形图标和 1 个个人资料照片。第一个标签没有动态调整大小。第二个没有正确对齐。
我能做些什么来解决这个问题?什么是常见的模式?
现在我对中间的视图有另一个问题。当标题变大时,它不会下降。有什么解决办法吗?
更新:正如你所说,我在 layoutSubviews 中解决了它。非常感谢!
您需要使用某种方法动态计算表格视图单元格的高度。
我个人将 twitter 用于类似的 tableview 格式,只需为您的自定义单元格创建单元格 .h .m,
你可以在 github 上找到原始示例
特别看(void)layoutSubviews
下面的代码
也看看这个教程
yourcustomcell.h
#import <UIKit/UIKit.h>
@interface TwitterFeedCell : UITableViewCell {}
@end
您的自定义 cell.m
#import "TwitterFeedCell.h"
#import <QuartzCore/QuartzCore.h>
@implementation TwitterFeedCell
- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
[[self detailTextLabel] setLineBreakMode:UILineBreakModeWordWrap];
[[self detailTextLabel] setNumberOfLines:NSIntegerMax];
[[[self imageView] layer] setMasksToBounds:YES];
[[[self imageView] layer] setCornerRadius:5.0];
//[self setSelectionStyle:UITableViewCellSelectionStyleNone];
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
CGRect rect = [[self imageView] frame];
rect.origin.x = 5.0;
rect.origin.y = 5.0;
[[self imageView] setFrame:rect];
rect = [[self textLabel] frame];
rect.origin.x = 60.0;
rect.origin.y = 5.0;
[[self textLabel] setFrame:rect];
rect = [[self detailTextLabel] frame];
rect.origin.x = 60.0;
rect.origin.y = 27.0;
[[self detailTextLabel] setFrame:rect];
}
@end
在您的单元格标识符上调用您的自定义单元格类
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"tweets";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[TwitterFeedCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
//cell = [[TwitterFeedCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
//cell.textLabel.text
//cell.detailTextLabel.text
//cell.imageView.image
}
使用此方法计算字符串的高度和宽度
+ (CGSize) calculateLabelHeightWith:(CGFloat)width text:(NSString*)textString
{
CGSize maximumSize = CGSizeMake(width, 9999);
CGSize size = [textString sizeWithFont:[UIFont fontWithName:@"HelveticaNeue-Medium" size:14]
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
+ (CGSize) calculateLabelWidthOfString:(NSString*)textString withFont:(UIFont*)font
{
CGSize maximumSize = CGSizeMake(9999, 22);
CGSize size = [textString sizeWithFont:font
constrainedToSize:maximumSize
lineBreakMode:UILineBreakModeWordWrap];
return size;
}
但是您仍然必须动态设置表格视图单元格的高度
为了那个原因
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return <height>;
}