例如。我得到了UISearchBar
,我想制作一个完全相同的副本。
我认为可以通过实现copy(with:)
的{{1}}(copyWithZone:
)然后调用NSObject
来实现。
但是我不知道在Swift的copy()
内部要做什么。
我只需要copyWithZone
的{{1}}的副本。
假设我们有一个有关如何复制实例的主题。
如何做到这一点?
答案 0 :(得分:1)
UISearchBar 无法复制,因为它不采用NSCopying。
您必须创建一个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并应用属性即可。