iOS 6 自定义分组 UITableViewCell 大小不正确

Posted

技术标签:

【中文标题】iOS 6 自定义分组 UITableViewCell 大小不正确【英文标题】:iOS 6 custom grouped UITableViewCell incorrect size 【发布时间】:2014-03-10 09:39:38 【问题描述】:

我创建了一个包含UITextFieldUITableViewCell 子类。但是,当我在 ios 6 中将该单元格添加到我的分组表格视图中时,该单元格会扩展到表格视图边缘。

这是自定义单元格的代码。

#import "ActivityNameEditCell.h"

@implementation ActivityNameEditCell

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier

    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) 
        self.textField = [[UITextField alloc] init];

        [self addSubview:self.textField];
    
    return self;


- (void)setSelected:(BOOL)selected animated:(BOOL)animated

    [super setSelected:selected animated:animated];

    // Configure the view for the selected state


- (void)layoutSubviews

    self.textField.frame = CGRectMake(self.contentView.frame.origin.x + 10, 0, self.frame.size.width - self.contentView.frame.origin.x - 10, self.frame.size.height);


@end

同样的单元格类在 iOS 7 中的布局正确

有什么明显的地方我做错了吗?如何修复 iOS 6 中的单元格?

【问题讨论】:

我认为CGRectMake中的self.contentView.frame.origin.x会导致iOS6出现问题 【参考方案1】:

我只是忘记在我的layoutSubviews 实现中调用[super layoutSubviews]。噗……

【讨论】:

【参考方案2】:

原因是你的类文件中的自定义布局

- (void)layoutSubviews

    self.textField.frame = CGRectMake(self.contentView.frame.origin.x + 10, 0, self.frame.size.width - self.contentView.frame.origin.x - 10, self.frame.size.height);

这里self.contentView.frame....和IOS7比较不同。

查看我的ANSWER here 了解更多信息

【讨论】:

以上是关于iOS 6 自定义分组 UITableViewCell 大小不正确的主要内容,如果未能解决你的问题,请参考以下文章

HadoopHadoop MR 自定义分组 Partition机制

iOS:Xcode 似乎在 XIB 文件名中插入了一个额外的空格,导致“无法加载 XIB 文件”问题

自定义 UITableViewCell 不会在 setNeedsDisplay 上重绘

一脸懵逼学习Hadoop中的MapReduce程序中自定义分组的实现

将两个文件分组为一种自定义文件类型

Android Gradle 插件Gradle 依赖管理 ③ ( build.gradle#dependencies 依赖分组 | configurations 自定义依赖分组 )