UITextView的PlaceholderTextView封装Swift4.0
来源:互联网 发布:linux 1.6 rpm bin 编辑:程序博客网 时间:2024/06/16 09:18
在开发中根据业务逻辑的需求我们需要封装很多控件来提高开发效率,开发效果
import UIKitclass PlaceholderTextView: UITextView , UITextViewDelegate{ var placeholder : String? var placeholderFont : UIFont? var placeholderColor : UIColor? override init(frame: CGRect, textContainer: NSTextContainer?) { super.init(frame: frame, textContainer: textContainer) self.addSubview(placeholderLabel) NotificationCenter.default.addObserver(self, selector: #selector(textDidBeginEditing), name: NSNotification.Name.UITextViewTextDidBeginEditing, object: nil) //文本框编辑结束时,触发 NotificationCenter.default.addObserver(self, selector: #selector(textDidEndEditing), name: NSNotification.Name.UITextViewTextDidEndEditing, object: nil) //文本框内容改变时,触发 NotificationCenter.default.addObserver(self, selector: #selector(textDidChange), name: NSNotification.Name.UITextViewTextDidChange, object: nil) if placeholder == nil{ placeholder = "请输入内容" } if placeholderFont == nil { placeholderFont = UIFont.systemFont(ofSize: 16) } if placeholderColor == nil { placeholderColor = UIColorFromRGB(rgbValue: 0xa0a0a0) } let fontSize = CGSize(width: self.width - 16, height: self.height - 10) let placeSize:CGSize = placeholder!.boundingRect(with: fontSize, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSAttributedStringKey.font: placeholderFont!], context: nil).size; placeholderLabel.frame = CGRect(x:8, y:5, width:placeSize.width ,height:placeSize.height + 1) placeholderLabel.text = placeholder! placeholderLabel.font = placeholderFont! placeholderLabel.textColor = placeholderColor! } @objc func textDidBeginEditing(){ //print("textDidBeginEditing") } @objc func textDidEndEditing(){ //print("textDidEndEditing") } @objc func textDidChange(){ if self.text.isEmpty { placeholderLabel.isHidden = false }else{ placeholderLabel.isHidden = true } } required public init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) } lazy var placeholderLabel:UILabel = { let placeholderLabel = UILabel() placeholderLabel.numberOfLines = 0 return placeholderLabel }() /* // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ rect: CGRect) { // Drawing code } */}
阅读全文
1 0
- UITextView的PlaceholderTextView封装Swift4.0
- swift4.0中UIView的frame的扩展封装
- 关于UITextView的封装
- Swift4.0 函数的定义
- 升级Swift4.0遇到的坑
- Swift4.0 新特性----Xcode9的优化
- Swift4.0字典的常用详解
- Swift4.0 数组的常用详解
- Swift4.0中setValuesForKeys()不起作用的问题
- swift4.0 涂鸦画板
- swift4.0 UIButton小解
- swift4.0 新特性
- Swift4.0 — 属性
- Swift4.0枚举基础知识
- swift4.0 适配
- Swift4.0 字符串操作
- Swift4.0开发笔记
- 【Swift4.0】基础部分
- HTTP 返回状态代码详解
- Linux Bash之select
- python
- jsp ---打印设置
- MV3D -- 3D proposal 网络
- UITextView的PlaceholderTextView封装Swift4.0
- bzoj 5056: OI游戏
- CentOS6.5 VPS安装PPTP VPN
- 将javaBean转换成XML
- CImg库介绍
- DevExpress软件的安装及首次使用流程讲解
- MV3D -- Region-based 融合网络
- 【学习笔记】socket IO demo
- javaweb实现定时任务