您正在尝试使用尚不存在的附件视图框架初始化 myAccessoryView。如果您指定 cell.accessoryType 属性,或者如果您自己创建和设置附件视图,它将在创建单元格(并添加到 tableView)之后创建,如下所示:
[cell setAccessoryView:myAccessoryView];
所以如果你这样做:
UIView *myAccessoryView = [[UIView alloc] initWithFrame:cell.accessoryView.frame];
[cell setAccessoryView:myAccessoryView];
您将拥有大小和坐标为零的附件视图。将cell设置为tableView后,accessoryView会在cell右侧获取标准原点。但它的大小仍然为零。并且您添加到附件视图的所有子视图都将设置为该原点。
方法“addSubview”不能更改子视图框架,它只是将一个视图放置到另一个视图。不知道为什么将新的子视图放置在前一个的右侧。要将您的子视图放在正确的位置,您必须手动设置它们的框架。例如:
UIView *greenCircle = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 30, 30)];
[myAccessoryView addSubview:greenCircle];
希望有帮助。