UIButton与@IBinspectable在Swift / Xcode中进行本地化

时间:2017-05-22 13:18:35

标签: swift xcode localization uibutton extension-methods

我正在尝试对所有UIButton子类进行扩展,这些子类允许我在Xcode UIBuilder中键入一个键,并让它在实际构建时自动将该键更改为适当的语言。

运行应用程序时效果很好但是我在构建器中输入的关键字未在UI中本地化。

我尝试使用#if builder语句和prepareForInterfaceBuilder()。 这是我到目前为止所得到的:

extension UIButton {
 @IBInspectable var localizedText: String {
     set (key) {
         self.setTitle(key.localized, for: .normal)
     }
     get {
         return (self.titleLabel?.text)!
     }
   }
 }

class Button: UIButton {
.
.
.
override func prepareForInterfaceBuilder() {
        super.prepareForInterfaceBuilder()
        self.titleLabel?.text = localizedText
  }
}

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

使用此扩展程序......

extension UIButton {
    @IBInspectable var localizedTitle: String {
        get { return "" }
        set {
            self.setTitle(newValue.localized, for: .normal)
        }
    }
}

extension String {
    var localized: String {
        get { return NSLocalizedString(self, comment: "") }
    }
}