Create a copy of a UIView in Swift
ios, swift, uiview
Solution
You can't arbitrarily copy an object. Only objects that implement the `NSCopying` protocol can be copied.
However, there is a workaround: Since `UIView`s can be serialized to disk (e.g. to load from a XIB), you could use `NSKeyedArchiver` and `NSKeyedUnarchiver` to create a serialized `NSData` describing your view, then de-serialize that again to get an independent but identical object.
Problem
Because objects are reference types, not value types, if you set a `UIView` equal to another `UIView`, the views are the same object. If you modify one you'll modifying the other as well. I have an interesting situation where I would like to add a `UIView` as a subview in another view, then I make some modifications, and those modifications should not affect the original `UIView`. How can I make a copy of the `UIView` so I can ensure I add that copy as a subview instead of a reference to the original `UIView`? Note that I can't recreate the view in the same way the original was created, I need some way to create a copy given any `UIView` object.