使用案例
extension UITextView { private struct RuntimeKey { static let hw_placeholderLabelKey = UnsafeRawPointer.init(bitPattern: "hw_placeholderLabelKey".hashValue) /// ...其他Key声明 } /// 占位文字 @IBInspectable public var placeholder: String { get { return self.placeholderLabel.text ?? "" } set { self.placeholderLabel.text = newValue } } /// 占位文字颜色 @IBInspectable public var placeholderColor: UIColor { get { return self.placeholderLabel.textColor } set { self.placeholderLabel.textColor = newValue } } private var placeholderLabel: UILabel { get { var label = objc_getAssociatedobject(self,UITextView.RuntimeKey.hw_placeholderLabelKey!) as? UILabel if label == nil { if (self.font == nil) { self.font = UIFont.systemFont(ofSize: 14) } label = UILabel.init(frame: self.bounds) label?.numberOfLines = 0 label?.font = self.font label?.textColor = UIColor.lightGray self.addSubview(label!) self.setValue(label!,forKey: "_placeholderLabel") objc_setAssociatedobject(self,UITextView.RuntimeKey.hw_placeholderLabelKey!,label!,.OBJC_ASSOCIATION_RETAIN_NONATOMIC) self.sendSubview(toBack: label!) } return label! } set { objc_setAssociatedobject(self,newValue,.OBJC_ASSOCIATION_RETAIN_NONATOMIC) } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。