将同一个子视图添加多次到视图中

27
我不确定这是否可行,但我想要做的是将一个子视图多次添加到父视图中。我已经尝试了类似于以下的代码:
[self.view addSubview: newView];
newView.center = CGPointMake(160, 100);
[self.view addSubview: newView];
newView.center = CGPointMake(160, 200);
[self.view addSubview: newView];

这只是将newView移动,而不是添加新的视图。有什么想法吗?

我也尝试了这个:

[self.view addSubview:newView];
UIView *anotherView = newView;
anotherView.center = CGPointMake(160, 100)
[self.view addSubview:anotherView];

编辑

这是我随着时间逐渐学会的解决方案。

另一个解决该问题的方法是创建一个包含视图的单独的nib文件,并多次添加nib的实例。一个实现此解决方案的良好模板是以与在cellForRowAtIndexPath方法中使用自定义UITableViewCell相同的方式进行。


感谢您提出这个问题。这间接回答了我的一个问题!节省了时间!WOOHOO! - Henley
1个回答

51

一个视图只能包含在单个父视图层次结构中。一旦您将其添加到新的视图中,它将从以前的视图中删除。在此情况下,它正在从同一视图的层次结构中删除并重新添加。如果要使其出现多次,则需要复制子视图。


3
你只是在创建一个指向同一UIView对象的新指针。由于UIView不响应复制,您需要实际分配和初始化一个新的UIView,并自定义它以匹配第一个UIView。这可能有所帮助:https://dev59.com/z2855IYBdhLWcg3wSiQ7。 - Christopher A

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接