当前位置: 首页 > 面试题库 >

在Swift中创建UIView的副本

文喜
2023-03-14
问题内容

因为对象是引用类型,而不是值类型,所以如果将equals设置UIView为another
UIView,则视图是同一对象。如果您修改了一个,那么您也将修改另一个。

我有一个有趣的情况,我想UIView在另一个视图中添加一个作为子视图,然后进行一些修改,这些修改不应影响原始视图UIView。如何制作的副本,以UIView确保可以将其添加为子视图而不是对原始视图的引用UIView

请注意,我无法以与原始视图相同的方式来重新创建视图,我需要某种方法来创建给定任何UIView对象的副本。


问题答案:

您不能随意复制对象。只能NSCopying复制实现该协议的对象。

但是,有一种解决方法:由于UIViews可以序列化到磁盘(例如,从XIB加载),因此您可以使用NSKeyedArchiverNSKeyedUnarchiver创建一个序列化的NSData描述视图,然后再次对其进行反序列化以获得一个独立但相同的对象。



 类似资料:
  • 问题内容: 我是新手,并不熟悉Objective-C。有人可以帮我将其转换为Swift吗?我得到这个代码雷Wenderlich最好的iOS做法-http://www.raywenderlich.com/31166/25-ios-app-performance-tips- tricks 您会将代码放在哪里?它将放入充满全局变量的类文件中吗? 问题答案: 如果您确实要寻找问题中方法的直接模拟,则可以执

  • 问题内容: 在目标c中,可以通过init方法完成 但是当我迅速这样做时 不能在方法中分配给自身,将显示错误。现在,我的方法是创建一个视图,并将从笔尖加载的视图添加到其中。有人有更好的主意吗? 问题答案: 对于Swift 4 对于Swift 3 您可以在UIView上创建扩展: 注意 :使用UINib更快,因为它可以为您缓存。 然后,您可以执行以下操作: 您将能够在任何视图上重用该方法。

  • 问题内容: 这是我的Objective-C代码,我正在使用该代码为我的自定义加载笔尖: Swift中的等效代码是什么? 问题答案: 原始解决方案 我创建了一个XIB和一个名为SomeView的类(为方便起见,使用了相同的名称)。我都基于UIView。 在XIB中,我将“文件所有者”类更改为SomeView(在身份检查器中)。 我在SomeView.swift中创建了一个UIView出口,将其链接到

  • 问题内容: 我想子类化并显示类似视图的登录名。我已经在Objective- C中创建了它,但是现在我想将其移植到Swift。我不使用情节提要,所以我用代码创建了所有UI。 但是第一个问题是我必须执行。我给了它一个默认的实现,因为它不会被调用。现在,当我运行程序时,它崩溃了,因为我也必须实现。现在我得到了: 我的问题是我应该在哪里创建文本字段等…,如果我从不实现框架和编码器,该如何“隐藏”呢? 问题

  • 问题内容: 因此,我正在制作一个游戏,其中我丢弃了必须由用户在屏幕底部的尖峰(三角形)破坏的对象。 我不知道如何制作一个三角形的UIView。但是我已经能够使其像这样的矩形工作: 这已经奏效了。但是我不知道如何制作一个三角形。我希望将其用作UIView的原因是因为im在其上使用了碰撞并让用户移动了它。我尝试了PNG三角形,但它会将碰撞检测为图像的边界,而不是三角形的起点。 我已经尝试过了,但是没有