附件视图显示细胞的一半

时间:2012-09-07 00:40:37

标签: objective-c ios xcode

我无法弄清楚如何让我的配件视图适合我的细胞。此外,当我添加子视图时,它会将其添加到添加的第一个子视图的右侧。我希望从右到左添加子视图。

我有这个用于我的配件视图

UIView *myAccessoryView = [[UIView alloc] initWithFrame:cell.accessoryView.frame];

任何时候我添加一个子视图我都会写这个

[myAccessoryView addSubview:greenCircle];

一旦它添加了另一个子视图,它就会被放置在前一个子视图的右侧,该视图甚至更远离我的单元格。如何改变添加子视图的方式?如何格式化附件视图以保留在单元格上?

1 个答案:

答案 0 :(得分:1)

您正尝试使用尚不存在的accessoryView框架初始化myAccessoryView。如果指定了cell.accessoryType属性,或者如果你自己创建和设置accessoryView,它将在创建单元格(并添加到tableView)后创建:

[cell setAccessoryView:myAccessoryView];

所以如果你这样做:

UIView *myAccessoryView = [[UIView alloc] initWithFrame:cell.accessoryView.frame];
[cell setAccessoryView:myAccessoryView];

您将拥有零尺寸和坐标的accessoryView。将单元格设置为tableView后,accessoryView将在单元格的右侧获得标准原点。但它仍然没有大小。您添加到accessoryView的所有子视图都将设置为该原点。

方法“addSubview”无法更改子视图框架,它只是将一个视图放到另一个视图中。 不知道为什么新的子视图被置于前一个方面。 要将子视图放在正确的位置,您必须手动设置它们的帧。例如:

UIView *greenCircle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[myAccessoryView addSubview:greenCircle];

希望有所帮助。