例如。我得到了一个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并应用这些属性。

07-27 13:41