最终设置UITextField的placeholder效果:
有需求1如下:
- 未点击时UITextField的placeholder为浅灰色
点击后,还未进行输入时,UITextField的placeholder变为深灰色
最终设置UITextField的placeholder效果:
有需求1如下:
点击后,还未进行输入时,UITextField的placeholder变为深灰色
1 | [UINavigationBar appearanceWhenContainedIn:self, nil]; |
1 | // barMetrics需要设置成UIBarMetricsDefault |
1 | @property(nonatomic,retain) UIimages *shadowimages |
最近看了一些block的资料,并动手做了一些实践,摘录并添加了一些结论。
首先,看一个极简的block:
1 | int main(int argc, const char * argv[]) { |
注意: clang -rewrite-objc 的转换都是基于 MRC 的,ARC 中的异同可参考 《ARC 对 Block 的一些影响》一节中的链接
对其执行clang -rewrite-objc
编译转换成C++实现,得到以下代码:
1 | struct __block_impl { |
不难看出其中的__main_block_impl_0
就是block的一个C++的实现(最后面的_0
代表是main中的第几个block),也就是说也是一个结构体
。
最近用到了sunnyxx的forkingdog系列(UIView-FDCollapsibleConstraints),纪录下关联对象和MethodSwizzling在实际场景中的应用。
runtime可以以底层的角度来对一些实现方式进行更改,比如说KVC
首先,先来了解下KVC的底层原理:
key : value