iPhone定制单元格,带有连续的UILabel

时间:2015-03-25 09:40:19

标签: ios objective-c uitableview autolayout custom-cell

我正在尝试用4个连续的UILabel实现自定义单元格(见下图)。在两个连续标签之间,将包括1个px间隙,并且4个标签必须水平填充单元格。我无法在故事板中找到任何实现此(独特设计)的方法。所以我以编程方式做到了。但是通过编程方式,如果我定向我的设备,我的表格视图单元格看起来像下面的图像(02),其中4个标签不会水平填充整个单元格。我尝试使用autoResizingMask,但这不起作用。如何以编程方式为此自定义单元格实现自动布局功能?或者有更好的想法在故事板中使用自动布局功能吗?

在我的自定义单元格实现文件中,我尝试了下面的代码 -

- (void)awakeFromNib {
    // Initialization code
    CGRect screenBounds = [[UIScreen mainScreen] bounds];
    float screenWidth = (screenBounds.size.width - 4.0f)/4;

    CGRect label1Container = CGRectMake(0, 2, screenWidth, 50);
    UILabel *label1 = [[UILabel alloc] initWithFrame:label1Container];
    label1.backgroundColor = [UIColor colorWithRed: 107.0f/255.0f green:199.0f/255.0f blue:190.0f/255.0f alpha:1.0];
    label1.textAlignment = NSTextAlignmentCenter;
    label1.numberOfLines = 0;
    label1.text = @"Lotery\nSerial";
    label1.font = [UIFont boldSystemFontOfSize:17];
    [self.contentView addSubview:label1];

    CGRect label2Container = CGRectMake(screenWidth + 1, 2, screenWidth, 50);
    UILabel *label2 = [[UILabel alloc] initWithFrame:label2Container];
    label2.backgroundColor = [UIColor colorWithRed: 107.0f/255.0f green:199.0f/255.0f blue:190.0f/255.0f alpha:1.0];
    label2.textAlignment = NSTextAlignmentCenter;
    label2.numberOfLines = 0;
    label2.text = @"Bank\nCode";
    label2.font = [UIFont boldSystemFontOfSize:17];
    [self.contentView addSubview:label2];

    CGRect label3Container = CGRectMake(screenWidth * 2 + 2, 2, screenWidth, 50);
    UILabel *label3 = [[UILabel alloc] initWithFrame:label3Container];
    label3.backgroundColor = [UIColor colorWithRed: 107.0f/255.0f green:199.0f/255.0f blue:190.0f/255.0f alpha:1.0];
    label3.textAlignment = NSTextAlignmentCenter;
    label3.numberOfLines = 0;
    label3.text = @"Branch\nCode";
    label3.font = [UIFont boldSystemFontOfSize:17];
    [self.contentView addSubview:label3];

    CGRect label4Container = CGRectMake(screenWidth*3+3, 2, screenWidth+1, 50);
    UILabel *label4 = [[UILabel alloc] initWithFrame:label4Container];
    label4.backgroundColor = [UIColor colorWithRed: 107.0f/255.0f green:199.0f/255.0f blue:190.0f/255.0f alpha:1.0];
    label4.textAlignment = NSTextAlignmentCenter;
    label4.numberOfLines = 0;
    label4.text = @"Bank\nSerial";
    label4.font = [UIFont boldSystemFontOfSize:17];
    [self.contentView addSubview:label4];


    //[self.label1 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleHeight)];
    //[self.label2 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    //[self.label3 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
    //[self.label2 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleRightMargin | UIViewAutoresizingFlexibleHeight)];
}

01

enter image description here

02

enter image description here

3 个答案:

答案 0 :(得分:2)

使用故事板。将所有标签设置为具有相同的宽度并连接它们-label1-label2-label3-label4-。还可以将它们连接到顶部和底部。

答案 1 :(得分:1)

您可以更轻松地在故事板中完成此操作。你只需要给这四个视图'相等的宽度''相等的高度'约束以及适当的尾随和前导约束。要提供“等宽”'相等高度',请选择故事板中的所有视图,然后转到编辑器 - > pin - >宽度相等/高度相等。 希望它有所帮助。

答案 2 :(得分:0)

您也可以使用UITableView。将自定义视图设置为顶部,然后在视图下方添加一个tableview,创建自定义UITableViewCell并使用您的对象初始化每个单元格。您可以根据需要自定义单元格。这种方式比我认为的自动布局更安全。