1

在此处输入图像描述

正如您在照片中看到的,有两个标签 1 个方形图标和 1 个个人资料照片。第一个标签没有动态调整大小。第二个没有正确对齐。

我能做些什么来解决这个问题?什么是常见的模式?

更新的图像

现在我对中间的视图有另一个问题。当标题变大时,它不会下降。有什么解决办法吗?

更新:正如你所说,我在 layoutSubviews 中解决了它。非常感谢!

4

2 回答 2

3

您需要使用某种方法动态计算表格视图单元格的高度。

我个人将 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
}
于 2013-01-15T14:25:39.320 回答
1

使用此方法计算字符串的高度和宽度

+  (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>;
}
于 2013-01-15T14:21:32.253 回答