扩展可能不包含 UItextfield 中的存储属性
Posted
技术标签:
【中文标题】扩展可能不包含 UItextfield 中的存储属性【英文标题】:Extensions may not contain stored properties in UItextfield 【发布时间】:2017-11-02 07:00:01 【问题描述】:extension UITextField
@IBInspectable var placeholdercolor: UIColor
willSet
attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: placeholdercolor])
我正在为占位符颜色创建 UITextField 扩展。我不想创建自定义类,我也尝试
@IBInspectable var placeholdercolor: UIColor
get
return self.placeholdercolor
set
attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: placeholdercolor])
但它在方法上给出错误(线程 1:EXC_BAD_ACCESS)
get
return self.placeholdercolor
请帮忙
【问题讨论】:
【参考方案1】:@IBInspectable var placeholdercolor: UIColor
get
// you can't return this here because this will call the getter again and again -> Stack Overflow
return self.placeholdercolor
set
attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: placeholdercolor])
您应该在 getter 中返回属性字符串中的前景色属性:
get
return attributedPlaceholder?.attribute(NSForegroundColorAttributeName, at: 0, effectiveRange: nil) as? UIColor
我建议您将此属性设为可选,以防万一该属性未设置。
编辑:
您的二传手也不正确。你应该使用newValue
:
attributedPlaceholder = NSAttributedString(string: placeholder != nil ? placeholder! : "", attributes:[NSAttributedStringKey.foregroundColor: newValue])
【讨论】:
以上是关于扩展可能不包含 UItextfield 中的存储属性的主要内容,如果未能解决你的问题,请参考以下文章
目标 C 和 Swift 互操作性导致错误“扩展可能不包含存储的属性”
子类/扩展 UIView 以便所有其他视图(UIImageView、UITextField ...)在创建时继承