如何在Swift

时间:2018-08-11 07:33:38

标签: ios swift

例如。我得到了UISearchBar,我想制作一个完全相同的副本。

我认为可以通过实现copy(with:)的{​​{1}}(copyWithZone:)然后调用NSObject来实现。

但是我不知道在Swift的copy()内部要做什么。

我只需要copyWithZone的{​​{1}}的副本。
假设我们有一个有关如何复制实例的主题。
如何做到这一点?

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并应用属性即可。