gpt4 book ai didi

ios - 如何将 UIView 复制到另一个

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:49:08 25 4
gpt4 key购买 nike

我的意图是用当前 Controller View 的一些控件(按钮、标签等)创建一个新的 View Controller 。

//Get all the controls
NSArray* array =[[NSArray alloc]init];
array=[self.view subviews];

for(int i =0 ;i<array.count ;i++)
{
// UIView *subview = (UIView *)[array objectAtIndex:i];
UIView *subview = (UIView *)[array objectAtIndex:i] ;
..
[nextview.view insertSubview:subview atIndex:i];
}

但是我发现当新的 viewcontroller View 关闭时父控件的所有控件也消失了。如何将 UIView * 对象复制到另一个对象?

最佳答案

你不能复制 UIView,它没有实现 Copying 协议(protocol)。但是您可以轻松创建一个创建新 View 的方法,然后创建所有 subview 的新实例并将它们设置为旧 View 。

类似于:

@interface UIView (Copy)
- (UIView*)newDuplicate;
@end

@implementation UIView (Copy)
- (UIView*)newDuplicate {
UIView *v = [[[self class] alloc] initWithFrame:self.frame];
v.autoresizingMask = self.autoresizingMask;

for (UIView *v1 in self.subviews) {
UIView *v2 = [[[v1 class] alloc] initWithFrame:v1.frame];
v2.autoresizingMask = v1.autoresizingMask;
[v addSubview:v2];
}

return v;
}
@end

但这不会复制 View 的所有属性,也不是完美的解决方案。您应该在要复制的 View 上实现类似的操作。

关于ios - 如何将 UIView 复制到另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com