2015-10-16 74 views
1

我有一个自定义TableViewCell就象这样:如何在一行中正确添加两个按钮和一个标签?

enter image description here

nameevent两个按钮。按钮名称将在代码中动态分配,如下所示:

[cell.newsEventName setTitle:event[@"name"] forState:UIControlStateNormal]; 
[cell.newsEventName setTitleColor:[UIColor colorWithRed:0.0 green:122.0/255.0 blue:1.0 alpha:1.0] forState:UIControlStateNormal]; 

有时这些名称太长,有时很短。我怎样才能动态地把它们放在一个行来避免这个:

enter image description here

如果我画按钮过大,以避免点再短的名字我还有这么多的空的空间。我怎样才能很好地把它们放在这些条件下?

+0

单元格的宽度是固定的,我的建议是消除黑色标签,因为它在UI是一种多余的大小调整的名字有所有你通过删除黑色标签保存的空间。 –

+0

“加入您的活动”可以替换为出现在左侧图片上的小图片 –

回答

1

您是否使用约束?对于增长/缩小的标签,您可以将内容拥抱优先级设置得更高,并且它会一直增长。

如果你不使用的限制,你可以把它的大小要适宜,或者只是在小区做它的布局

1

您可以使用UIStackView动态重新做大小。这将允许您动态调整按钮的大小。但是,如果你这样做,你只能与iOS 9兼容。您可以像添加界面构建器中的其他元素一样添加堆栈视图。

0

允许它分解为3个步骤

  • 甲:查找所需要的尺寸来进行名称

    CGSize sizeMax = CGSizeMake(cell.frame.size.width, FLT_MAX); 
    CGSize sizeExpected = [stringName sizeWithFont:buttonName.titleLabel.font 
              constrainedToSize:maximumLabelSize 
               lineBreakMode:NSLineBreakByWordWrapping]; 
    float buttonWidth = sizeExpected.width; 
    
  • B:设定按钮的宽度(用名)

    CGRect r1 = cell.newsEventName.frame; 
    cell.newsEventName setFrame:CGRectMake(r1.origin.x, r1.origin.y, buttonWidth, r1.size.height); 
    
  • C:设置标签的宽度

    CGRect r2 = cell.newsEventLabel.frame; 
    cell.newsEventLabel setFrame:CGRectMake(r1.origin.x+buttonWidth, r2.origin.y, r2.size.width, r2.size.height); 
    
相关问题