ios - 如何在 Swift 中将一个 View 复制到另一个 View

标签 ios swift xcode uiview copy

我想将一个 UIView 复制到另一个 View 而不使其存档或取消存档。 如果您有任何解决方案,请帮助我。

我尝试通过扩展 UIView 作为 Stack over flow 上已经可用的答案。但是当我通过带有图案图像背景颜色的 View 时它崩溃了。

最佳答案

下面与我的评论相关的代码:

extension UIView
{
    func copyView() -> UIView?
    {
        return NSKeyedUnarchiver.unarchiveObjectWithData(NSKeyedArchiver.archivedDataWithRootObject(self)) as? UIView
    }
}

我刚刚在 Playground 中尝试了这个简单的代码来检查复制 View 是否有效并且它没有指向相同的 View :

let originalView = UIView(frame: CGRectMake(0, 0, 100, 50));
originalView.backgroundColor = UIColor.redColor();
let originalLabel = UILabel(frame: originalView.frame);
originalLabel.text = "Hi";
originalLabel.backgroundColor = UIColor.whiteColor();
originalView.addSubview(originalLabel);

let copyView = originalView.copyView();
let copyLabel = copyView?.subviews[0] as! UILabel;

originalView.backgroundColor = UIColor.blackColor();
originalLabel.text = "Hola";

originalView.backgroundColor;   // Returns black
originalLabel.text;             // Returns "Hola"
copyView!.backgroundColor;      // Returns red
copyLabel.text;                 // Returns "Hi"

如果扩展不起作用,copyVieworiginalView 将具有相同的 backgroundColor,同样的情况也会发生在标签。所以有可能是其他部分的问题。

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

相关文章:

swift - 使用未声明的类型 'AttributedString'

objective-c - 在终端中使用模拟器进行 OCUnit 应用程序测试

ios - 修复警告 : Attempt to present ViewController on NavigationController whose view is not in the window hierarchy

ios - 如何生成iPhone XCTest报告?

ios - 无法在 iOS 中找到图像的 DPI

ios - 检查一个方法是否已经被调用并且不要再次调用它

swift - 难以理解复杂的快速关联类型声明

ios - 在 iOS 的谷歌地图中绘制路线是否有航点限制

ios - UITextField shouldChangeCharactersInRange 没有检测到第一个字符

iphone - 从命令行分发 ipa 到 iTunes connect