例如。我得到了一个UISearchBar
我想做一个完全相同的副本。
我认为可以通过实现copy(with:)
的copyWithZone:
(NSObject
),然后调用copy()
。
但我不知道的是在Swift中的copyWithZone
里面该怎么做。
我只需要一份。
假设我们有一个关于如何复制实例的主题。
如何做到这一点?
最佳答案
不能复制UISearchBar,因为它不采用nscoping。
您必须创建UISearchBar
的新实例并应用自定义设置,为此,您还可以创建一个保存设置的结构,如下所示:
struct SearchBarConfig {
var placeholder: String?
var isTranslucent: Bool
// Display Attributes
var barStyle: UIBarStyle
var barTintColor: UIColor?
var searchBarStyle: UISearchBarStyle
var tintColor: UIColor!
init(isTranslucent: Bool, barStyle: UIBarStyle, searchBarStyle: UISearchBarStyle) {
self.isTranslucent = isTranslucent
self.barStyle = barStyle
self.searchBarStyle = searchBarStyle
}
}
let existingSearchBar = UISearchBar()
var existingStatusBarConfig = SearchBarConfig(
isTranslucent: existingSearchBar.isTranslucent,
barStyle: existingSearchBar.barStyle,
searchBarStyle: existingSearchBar.searchBarStyle)
现在,如果您已经实现了上述功能,您只需创建一个新的searchBar并应用这些属性。