[Swift]iOS 开发:给 UITextView 添加占位符的方法
2017-06-11 10:40
417 查看
本文参考了史上最全的iOS之UITextView实现placeHolder占位文字的N种方法,从中选出了我认为最省事的一种方法,尽量最简化,代码如下:
是不是狠简单
class CustomTextView: UITextView { private var _placeholder:String! init(frame:CGRect,placeholder:String) { super.init(frame: frame, textContainer: nil) _placeholder = placeholder NotificationCenter.default.addObserver(self, selector: #selector(textDidChange), name: .UITextViewTextDidChange, object: self)//观察是否有文字输入 } //无论我们想要绘制什么图形,首要任务就是先获取上下文,你可以把上下文理解成一块画布,有了画布才能画东西;iOS 有三种获取上下文的方式:重写 UIView 的drawRect 和 drawRect inContext 方法会自动生成一个上下文,我们直接在这两个方法里绘制内容,UIView 就能自动渲染出来了,还有一种方法是使用UIGraphicsBeginImageContextWithOptions方法自己创建一个 UIImage 类型的上下文,然后使用let ctx = UIGraphicsGetCurrentContext() 获取就行了 override func draw(_ rect: CGRect) { if hasText{ return//如果输入框内有文字,直接返回 } _placeholder.draw(in: CGRect(x:5,y:7,width:rect.width-10,height:rect.height), withAttributes: [NSForegroundColorAttributeName:UIColor.yellow,NSFontAttributeName:UIFont.systemFont(ofSize: 14)])//占位符的位置坐标,字体大小以及绘制区域大小,如果你对占位符的大小和位置不满意,请在这修改 } func textDidChange(){ setNeedsDisplay()//调用drawRect方法,切勿手动调用drawRect方法 } deinit { NotificationCenter.default.removeObserver(self) } required init?(coder aDecoder: NSCoder) { fatalError("init(coder:) has not been implemented") } } /////////////////////// override func viewDidLoad() { super.viewDidLoad() let textView = CustomTextView(frame: CGRect(x: 100, y: 100, width: 100, height: 100),placeholder:"我是占位符") textView.backgroundColor = UIColor.brown view.addSubview(textView) }
是不是狠简单
相关文章推荐
- iOS开发中Swift3 监听UITextView文字改变的方法(三种方法)
- iOS 应用添加启动画面以及App应用图标的方法 分类: ios开发 2015-04-07 20:32 213人阅读 评论(0) 收藏
- IOS开发笔记之十二——Xcode下类中供外部调用的方法添加注释说明技巧
- 基于iOS开发对Swift构造方法的感悟
- iOS应用开发中UIView添加边框颜色及设置圆角边框的方法
- Swift开发IOS-UITextView
- 使用Swift开发IOS项目、UI创建、方法调用
- iOS开发用swift添加admob广告
- Swift开发教程--如何给UITextView添加圆角边框
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- 从0开始学习Swift开发IOS应用(2)——为app添加图标
- 转:ios开发--给应用添加新的字体的方法
- IOS开发语言Swift入门连载---方法
- iOS开发(Swift):创建UINavigationView的三种方法
- iOS开发 -- 添加自定义ttf字体的方法
- iOS 开发之 为UIButton添加类别方法加载网络图片
- 【iOS-Cocos2d游戏开发之十一】使用Box2d物理系统以及在cocos2d框架添加Box2d物理系统lib包的方法
- iOS开发-在Swift里使用AFNetworking方法
- Ios开发Swift自定义UIbutton增加一个能设置高亮状态下背景颜色的方法
- iOS开发 -- 添加自定义ttf字体的方法