随口
怎么去学一个新的类,看他继承谁,看他的属性都有什么作用,隐藏属性是什么。
每更新一个Xcode 就会有新的知识,研究一个自己的一套学习方法,多思考,类的属性在哪里可以用到
合格的自定义控件只需要外部给你数据就可以来,不需要关心你内部是怎么实现的。
1. 文本输入框有哪些选择 为什么要选择继承UITextView
用油文本输入功能的目前有UITextField 和 UITextView ,总结一下两个控件的特点,UITextView 换行比较方便,占位符可以自定义。
2.作为一个自定义控件应该考虑的情况是哪些?
1.>给别人提供什么借口,别人使用你这个控件时会使用的方法和属性
2.>当别人使用你控件属性时,应该直接改变控件属性值,重写 属性set 方法。
3.>使用控件父类属性时,不会调用重绘方法。出现文字重叠现象,所以需要重写 父类一些属性的set方法,比如text,font;
3.控件的使用注意事项?
1.>监听控件行为时,注意不要让 控件的代理是它自己<self.delegate = self>,这句话随时可以当外部调用delegate时,内部空间的代理就挂掉了;
另外,使用代理对象是自己,这个设计本身不合理。
2.> 需要知道 [self setNeedsDisplay] 方法是做什么的, 会调用 - (void)drawRect:(CGRect)rect 方法重绘
4.自定义文本输入框控件的完整流程。
1.>提供给外部可以改变自己占位符的文字属性 和占位符颜色的属性 字体可以使用外部字体大小
2.> 使用 画图 将占位符文字画出来 ,注意这里需要判断 文本框上面是否 有文字,,可以根据 UITextView.hasText 属性 和 self.text.length
使用 drawInRect: withAttributes: 方法 将 文字输入范围限制在一定范围内
self.font 需要一个默认字体,跟color一样
4.>重写属性set 方法,在外部改变控件属性时,应该第一时间改变自身属性值;重写set 方法 注意要重新调用一次 绘图方法
5.>当调用控件父类属性时,不会出现重绘方法,所以 我们需要重写 父类的一些属性 set方法
4.注意事项
1.>[self setNeedsDisplay] 会在下一次消息循环中调用 - (void)drawRect:(CGRect)rect 方法,重复多次调用是没有用的。每消息循环一次,才会调用一次。
NSRunLoop 消息循环
2.>通知需要移除